Asp.net mvc ASP.NET MVC中的SelectList为模型属性指定值
我的问题与ASP.NETMVC4有关 我在操作方法中有以下代码: 我的看法是: 我的目标是提供一个包含allProfiles.ProfileName的下拉列表 每个选定项的文本。 当他们选择其中一个时,Id属性被分配给Model.Author。 提交表单时,我希望POST方法显示一条消息 作者包含那个整数 我的DropDownList正确显示配置文件名列表。但是表单提交 始终将Model.Author设置为0Asp.net mvc ASP.NET MVC中的SelectList为模型属性指定值,asp.net-mvc,Asp.net Mvc,我的问题与ASP.NETMVC4有关 我在操作方法中有以下代码: 我的看法是: 我的目标是提供一个包含allProfiles.ProfileName的下拉列表 每个选定项的文本。 当他们选择其中一个时,Id属性被分配给Model.Author。 提交表单时,我希望POST方法显示一条消息 作者包含那个整数 我的DropDownList正确显示配置文件名列表。但是表单提交 始终将Model.Author设置为0 我做错了什么?我解决了自己的问题 为了使您的viewbag中的selectlist成为
我做错了什么?我解决了自己的问题 为了使您的viewbag中的selectlist成为一个下拉列表,该列表是谁的值 在视图中设置模型的属性,解决方案如下: GET-Create操作方法 创建下拉列表的视图
这就是它。这是一种将模型值传递给视图的非常糟糕的方法。这就是创建专用viewmodel的要点。因为看起来您有许多要在表单上提交的值。然后将模型传递给表单,并使用html助手方法editorfor,。。。生成页面上的元素。在控制器后操作中,将整个viewmodel传递回控制器。默认的模型绑定器应该为您连接所有的值。为了简单起见,您可以从第一行的SelectList中删除.ToList。。。接受IEnumerable,因此无需创建列表的额外开销,帮助器可以缩短为@Html.DropDownListForm=>m.Author,ViewBag.allProfiles
public ActionResult Create()
{
var allProfiles = db.Profiles.ToList();
var profsSelectList = new SelectList(allProfiles, "Id", "ProfileName");
ViewBag.allProfiles = profsSelectList;
return View();
}
<div class="editor-field">
@Html.DropDownList("allProfiles")
@Html.ValidationMessageFor(model => model.Author)
</div>
public ActionResult Create()
{
var allProfiles = db.Profiles.ToList();
var profsSelectList = new SelectList(allProfiles, "Id", "ProfileName");
ViewBag.allProfiles = profsSelectList;
return View();
}
<div class="editor-field">
@Html.DropDownListFor(m=>m.Author, (IEnumerable<SelectListItem>)ViewBag.allProfiles)
</div>