在我的编辑视图中,我有一个包含多个输入框(EditorFor
)的表单,每个输入都有一个“运算符”下拉列表,其值为=, <>, IN, NOT IN
。每次进入编辑视图时,选定的DropDown值都会被“重置”。
传入的ViewModel确实包含正确的值,但是我无法将选择列表默认为该选定值。
下拉
@Html.DropDownListFor(model => model.JcrOrgBudgetGroupOp, new SelectList(OperatorsHelper.StrOperators,selectedValue:Model.JcrOrgBudgetGroupOp)
StrOperators
public static class OperatorsHelper
{
public static IEnumerable<string> StrOperators = new List<string>
{
"=",
"<>",
"IN",
"NOT IN"
};
}
答案 0 :(得分:0)
首先,在视图中创建SelectList
有时可能会出现问题。 DropDownListFor
不需要SelectList
:仅IEnumerable<SelectListItem>
。推荐的方法总是做一些事情:
public static class OperatorsHelper
{
public static IEnumerable<string> StrOperators = new List<string>
{
return new[] { "=", "<>", "IN", "NOT IN" }.Select(op => new SelectListItem
{
Text = op,
Value = op
});
};
}
然后:
@Html.DropDownListFor(m => m.JcrOrgBudgeGroupOp, OperatorsHelper.StrOperators)
Razor会自动创建SelectList
并选择合适的项目。
要注意的另一件事是“选定”值实际上是ModelState
中的值,而不一定是Model
上的值。重要的是,ModelState
由Request
和ViewBag
/ ViewData
的值组成,首先是Model
,最后是jcrOrgBudgetGroupOp
。换句话说,如果您要发布名为jcrOrgBudgetGroupOp
的字段,请从ViewBag.JcrOrgBudgetGroupOp
的网址传递操作参数的值,或设置Typeface
(在任何一种情况下,套管都无关紧要) ),该值将始终是所选择的。