如何在包含列表的ViewBag中设置MVC5中的TextBox值?正如您所看到的,我的列表位于 Viewbag.photos 中,我希望每个值都包含 photo.id 在我的TextBox中,然后将其传递给控制器
@foreach (var photo in ViewBag.photos)
{
@if (@photo.comment != null)
{
<h6>@photo.comment</h6>
}
else
{
<h6> - </h6>
}
@Html.TextBox("photoID", @photo.id)
}
尝试这样做我收到错误:
错误CS1973&#39; HtmlHelper&gt;&#39;没有适用的方法 命名&#39; TextBox&#39;但似乎有一个名称的扩展方法。 扩展方法不能以动态方式进行分析。
也许还有另一种解决方法?
答案 0 :(得分:2)
这种情况正在发生,因为ViewBag.photos
是dynamic
个对象。编译器无法知道其类型,因此您必须手动将其转换为其原始类型。
例如:
@Html.TextBox("photoID", (int)photo.id)
作为旁注(我不确定这是否会阻止您的代码工作,但无论如何都是好的做法),您也有太多@
:引用Visual Studio,{{1 }}。所以你的最终代码如下:
once inside code, you do not need to prefix constructs like "if" with "@"
您还应该考虑使用ViewModels而不是 @foreach (var photo in ViewBag.photos)
{
if (photo.comment != null)
{
<h6>@photo.comment</h6>
}
else
{
<h6> - </h6>
}
@Html.TextBox("photoID", (int)photo.id)
}
在控制器和视图之间传递数据。