您的代码存在一些概念问题:
首先,@Html.DropDownListFor(n=>n.OrderTemplates,newSelectList(Model.OrderTemplates,"OrderTemplateId","OrderTemplateName",1),"Pleaseselectanordertemplate")
使用DropDownListFor时,第一个参数是提交表单后存储所选值的属性。因此,在您的情况下,您应该拥有SelectedOrderId模型的一部分或类似的东西,以便以这种方式使用它:@Html.DropDownListFor(n=>n.SelectedOrderId,newSelectList(Model.OrderTemplates,"OrderTemplateId","OrderTemplateName",1),"Pleaseselectanordertemplate")
第二,
除了使用ViewBag之外,这没有错,但有更好的方法(将信息放在ViewModel中),当您持有SelectList的ViewBag属性时,存在“小错误”(或未预料到的行为)放置所选值的属性的相同名称。要避免这种情况,请在命名包含项目列表的属性时使用其他名称。
如果我是你,我会使用一些代码来避免这个问题并编写更好的MVC代码:
视图模型:publicclassMyViewModel{
publicintSelectedOrderId{get;set;}
publicSelectListOrderTemplates{get;set;}
//Otherpropertiesyouneedinyourview}
控制器:publicActionResultMyAction(){
varmodel=newMyViewModel();
model.OrderTemplates=newSelectList(db.OrderTemplates,"OrderTemplateId","OrderTemplateName",1);
//Otherinitializationcode
returnView(model);}
在您的视图中:@Html.DropDownListFor(n=>n.SelectedOrderId,Model.OrderTemplates,"Pleaseselectanordertemplate")