我有一个HTML下拉列表:
<select name="status">
<option value="close" >Close Task</option>
<option value="open" >Reopen Task</option>
</select>
我想根据视图模型中的'Task.Completion'属性设置'selected'选项:
public class TaskEditViewModel
{
public Task Task { get; set; }
public TaskComment TaskComment { get; set; }
}
因此,如果Task.Completion为NULL,则选择'close'选项,否则选择'open'选项。
我该怎么做?
答案 0 :(得分:0)
您的视图模型似乎并未适应您在视图中尝试执行的操作(根据您的问题显示下拉列表并根据视图模型上的某些属性预选值)。
因此,更现实的视图模型将是:
public class TaskEditViewModel
{
public string Completion { get; set; }
public IEnumerable<SelectListItem> Actions
{
get
{
return new[]
{
new SelectListItem { Value = "close", Text = "Close Task" },
new SelectListItem { Value = "open", Text = "Reopen Task" },
};
}
}
}
然后你可以有一个控制器动作,它将填充并将这个视图模型传递给视图:
public ActionResult Foo()
{
var model = new TaskEditViewModel();
// this will automatically preselect the second item in the list
model.Completion = "open";
return View(model);
}
最后在强类型视图中,您可以使用DropDownListFor
帮助器呈现此下拉列表:
@model TaskEditViewModel
@Html.DropDownListFor(x => x.Completion, Model.Actions)