Html.DropdownListFor未设置选定值

Html.DropdownListFor未设置选定值

如何设置Html.DropDownListFor的选定值?我一直在网上看看,并且已经看到它可以通过使用第四个参数来实现,如下所示:

@Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0),  "Please select a country")

我的选择列表然后显示如下:

<select id="ShipFromCountries" name="ShipFromCountries">
     <option value="">Please select a country</option>
     <option value="GB">United Kingdom</option>
     <option value="US">United States</option>
     ...</select>

但由于某种原因英国仍然被选中,但我想要“请选择一个国家”进行选择。

谁知道我怎么能做到这一点?

编辑

我已经更新了我的代码,因为功能略有变化,但似乎仍然遇到这个问题。这就是我的看法:

@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")

1option我想要选择的Id ,我也试过了文本,option但也没有用。

有任何想法吗?


紫衣仙女
浏览 902回答 3
3回答

慕慕森

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

慕哥9229398

对我来说,没有工作,所以这样工作:控制器:int&nbsp;selectedId&nbsp;=&nbsp;1;ViewBag.ItemsSelect&nbsp;=&nbsp;new&nbsp;SelectList(db.Items,&nbsp;"ItemId",&nbsp;"ItemName",selectedId);视图:@Html.DropDownListFor(m&nbsp;=>&nbsp;m.ItemId,(SelectList)ViewBag.ItemsSelect)JQuery的:$("document").ready(function&nbsp;()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$('#ItemId').val('@Model.ItemId');});

慕田峪9158850

当您传递这样的对象时:new&nbsp;SelectList(Model,&nbsp;"Code",&nbsp;"Name",&nbsp;0)你说的是:Source(Model)和Key("Code")Text("Name")和选中的值0。您的属性0源可能没有值Code,因此HTML Helper将选择第一个元素将实际selectedValue传递给此控件。
打开App,查看更多内容
随时随地看视频慕课网APP