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")1是option我想要选择的Id ,我也试过了文本,option但也没有用。有任何想法吗?
3 回答
慕慕森
TA贡献1856条经验 获得超17个赞
您的代码存在一些概念问题:
首先,
@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
使用DropDownListFor时,第一个参数是提交表单后存储所选值的属性。因此,在您的情况下,您应该拥有SelectedOrderId
模型的一部分或类似的东西,以便以这种方式使用它:
@Html.DropDownListFor(n => n.SelectedOrderId, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
第二,
除了使用ViewBag之外,这没有错,但有更好的方法(将信息放在ViewModel中),当您持有SelectList的ViewBag属性时,存在“小错误”(或未预料到的行为)放置所选值的属性的相同名称。要避免这种情况,请在命名包含项目列表的属性时使用其他名称。
如果我是你,我会使用一些代码来避免这个问题并编写更好的MVC代码:
视图模型:
public class MyViewModel{ public int SelectedOrderId {get; set;} public SelectList OrderTemplates {get; set;} // Other properties you need in your view}
控制器:
public ActionResult MyAction(){ var model = new MyViewModel(); model.OrderTemplates = new SelectList(db.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1); //Other initialization code return View(model);}
在您的视图中:
@Html.DropDownListFor(n => n.SelectedOrderId, Model.OrderTemplates, "Please select an order template")
慕哥9229398
TA贡献1877条经验 获得超6个赞
对我来说,没有工作,所以这样工作:
控制器:
int selectedId = 1;ViewBag.ItemsSelect = new SelectList(db.Items, "ItemId", "ItemName",selectedId);
视图:
@Html.DropDownListFor(m => m.ItemId,(SelectList)ViewBag.ItemsSelect)
JQuery的:
$("document").ready(function () { $('#ItemId').val('@Model.ItemId');});
慕田峪9158850
TA贡献1794条经验 获得超7个赞
当您传递这样的对象时:
new SelectList(Model, "Code", "Name", 0)
你说的是:Source(Model
)和Key("Code"
)Text("Name"
)和选中的值0
。您的属性0
源可能没有值Code
,因此HTML Helper将选择第一个元素将实际selectedValue传递给此控件。
添加回答
举报
0/150
提交
取消