使用ViewModel中的值设置HTML下拉列表选定项

时间:2012-01-03 16:55:14

标签: asp.net-mvc drop-down-menu selectedvalue

我有一个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'选项。

我该怎么做?

1 个答案:

答案 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)