我正在编辑页面中使用DropDownListFor帮助方法,我没有运气来选择我指定的值.我在Stackoverflow上发现了一个类似的问题.建议的解决方法是"在视图代码中填充SelectList".问题是我已经尝试过这个但它仍然没有用.
<%= Html.DropDownListFor(model => model.States, new SelectList(Model.States.OrderBy(s => s.StateAbbr), "StateAbbr", "StateName", Model.AddressStateAbbr), "-- Select State --")%>
Run Code Online (Sandbox Code Playgroud)
我设置了断点并验证了model.AddressStateAbbr的存在性(和有效性).我只是不确定我错过了什么.
wut*_*cel 175
经过一个小时的研究,我发现导致所选内容未设置的问题DropDownListFor
.原因是您使用ViewBag的名称与模型的属性相同.
例
public class employee_insignia
{
public int id{get;set;}
public string name{get;set;}
public int insignia{get;set;}//This property will store insignia id
}
// If your ViewBag's name same as your property name
ViewBag.Insignia = new SelectList(db.MtInsignia.AsEnumerable(), "id", "description", 1);
Run Code Online (Sandbox Code Playgroud)
视图
@Html.DropDownListFor(model => model.insignia, (SelectList)ViewBag.Insignia, "Please select value")
Run Code Online (Sandbox Code Playgroud)
所选选项不会设置为下拉列表,但是当您将ViewBag的名称更改为其他名称时,所选选项将显示正确.
例
ViewBag.InsigniaList = new SelectList(db.MtInsignia.AsEnumerable(), "id", "description", 1);
Run Code Online (Sandbox Code Playgroud)
视图
@Html.DropDownListFor(model => model.insignia, (SelectList)ViewBag.InsigniaList , "Please select value")
Run Code Online (Sandbox Code Playgroud)
BnW*_*and 30
尝试:
<%= Html.DropDownListFor(
model => model.AddressStateAbbr,
new SelectList(
Model.States.OrderBy(s => s.StateAbbr),
"StateAbbr",
"StateName",
Model.AddressStateAbbr), "-- Select State --")%>
Run Code Online (Sandbox Code Playgroud)
或者在Razor语法中:
@Html.DropDownListFor(
model => model.AddressStateAbbr,
new SelectList(
Model.States.OrderBy(s => s.StateAbbr),
"StateAbbr",
"StateName",
Model.AddressStateAbbr), "-- Select State --")
Run Code Online (Sandbox Code Playgroud)
基于表达式的助手似乎不尊重SelectList中SelectListItems的Selected属性.
Cha*_*ock 24
如果你正确地使用模型并且使用模型 - 不像所有这些ViewBag怪人 - 并且仍然看到问题,那是因为它与它所具有的选择@Html.DropDownListFor(m => m.MyValue, @Model.MyOptions)
不匹配.这可能是两个原因:MyValue
MyOptions
MyValue
一片空白.您尚未在ViewModel中设置它.让一个人MyOptions
有一个Selected=true
不会解决这个问题.MyValue
中的类型不同MyOptions
.所以,如果MyValue
是(int) 1
,但你MyOptions
是一个填充字符串列表,{"01", "02", "03", ...}
显然不会选择任何东西.fia*_*iat 16
虽然没有解决这个问题 - 如果他们遵循我的思路,它可能有助于未来的googlers:
我想要一个多重选择,这个属性黑客DropDownListFor不是自动选择
Html.DropDownListFor(m => m.TrainingLevelSelected, Model.TrainingLevelSelectListItems, new {multiple= "multiple" })
Run Code Online (Sandbox Code Playgroud)
相反,我应该使用ListBoxFor,这使一切正常
Html.ListBoxFor(m => m.TrainingLevelSelected, Model.TrainingLevelSelectListItems)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
76202 次 |
最近记录: |