慕慕森
您的代码存在一些概念问题:首先,@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")