进入MVC ASP.NET,激发潜力。我有点陷入困境,想知道是否可以提出建议。
所以我已经研究了如何将类型对象捆绑到viewdata中,然后在视图中访问它们。
所以在视图中我拿起我的viewdata对象并将其分配给相应的类型。
@using MyPro.Models;
@{
var viewDataMyObj = ViewData["MyObj"] as MyObj;
}
然后我进一步向下搜索并成功访问我的{get,set}并填充DropDownListFor ...
@Html.DropDownListFor(x => viewDataMyObj.myVar, new SelectList((IEnumerable<SelectListItem>)viewDataMyObj.mySel.OrderBy(c => c.Value), "Value", "Text", "Select All"), new { @Class = "form-control" })
所以mySel在我的模型中并且有效。它是字符串myVar,我不能将其指定为id字段,它实际上需要&#34; viewDataMyObj.myVar&#34;并将其作为ID,而不是myVar的内容,即#34;你好&#34;。我在这里肯定缺乏一点知识,并会对任何建议表示感谢。
答案 0 :(得分:0)
Html.DropDownListFor
应该仅适用于您的模型。因此将其应用于viewDataMyObj.myVar
无法奏效。
从您显示的代码中,没有任何证据表明您的视图具有模型(不要将using
与model
混淆)
假设您的视图应该与MyObj
模型一起使用,并且MyObj
具有myVar
属性,该属性应该从下拉列表填充,这应该有效:
@model MyPro.Models.MyObj
@{
var viewDataMyObj = ViewData["MyObj"] as MyObj;
}
@Html.DropDownListFor(x => x.myVar, new SelectList((IEnumerable<SelectListItem>)viewDataMyObj.mySel.OrderBy(c => c.Value), "Value", "Text", "Select All"), new { @Class = "form-control" })
您可以看到DropDownListFor
适用于x.myVar
,这是您模型的属性,而不适用于viewDataMyObj.myVar
除此之外,如果您的模型是MyObj并且它还包含填充您的下拉列表的数据,则您不需要全部使用ViewData广告:
@Html.DropDownListFor(
x => x.myVar,
Model.mySel.OrderBy(c => c.Value)
.Select(c => new SelectListItem{Value = c.Value, Text = c.Text}),
"Select All",
new { @Class = "form-control" })
答案 1 :(得分:0)
创建ID时尝试myVar.Value
为我工作......