繁体   English   中英

从MVC5 C#中的ViewBag列表中设置TextBox值

[英]Set TextBox value from ViewBag list in MVC5 C#

如何从包含列表的ViewBag中在MVC5中设置TextBox值? 如您所见,我的列表在Viewbag.photos中 ,我想在我的TextBox中包含photo.id的每个值,然后将其传递给控制器

 @foreach (var photo in ViewBag.photos)
     {
            @if (@photo.comment != null)
            {
              <h6>@photo.comment</h6>
            }
            else
            {
              <h6> - </h6>
            }
            @Html.TextBox("photoID", @photo.id)

     }

尝试这样做,我得到一个错误:

错误CS1973“ HtmlHelper>”没有名为“ TextBox”的适用方法,但似乎具有该名称的扩展方法。 扩展方法无法进行动态分配。

也许还有另一个解决方法?

这是因为ViewBag.photos是一个dynamic对象。 编译器无法知道其类型,因此您必须手动将其转换为其原始类型。

例如:

@Html.TextBox("photoID", (int)photo.id)

作为一个旁注(我不确定这是否会阻止您的代码正常工作,但还是一个好习惯),您也有太多@ s:引用Visual Studio, once inside code, you do not need to prefix constructs like "if" with "@" 因此,您的最终代码将如下所示:

 @foreach (var photo in ViewBag.photos)
 {
     if (photo.comment != null)
     {
         <h6>@photo.comment</h6>
     }
     else
     {
         <h6> - </h6>
     }
     @Html.TextBox("photoID", (int)photo.id)
 }

您还应该考虑使用ViewModels而不是ViewBag在控制器和视图之间传递数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM