如何使用Model选择选项?

时间:2014-07-17 08:52:50

标签: c# javascript jquery asp.net-mvc

没有找到关于此的事情。

我有一个模特:

public class Filter
{
    public string No { get; set; }

    public DateTime EndTime { get; set; }

    public string FilterStatus { get; set; }
}

在我看来,我有第二件事:

<select id="status" name="status" style="width: 120px;font-size: 0.9em; padding: 0;" class="k-dropdown">
    <option>-- Select --</option>
    <option>Yes</option>
    <option>No</option>
</select>

我要做的是选择与Model.FilterStatus相同的选项。例如,如果状态为“是”,则下拉列表中的文本应为“是”。但有可能这样做吗?是否使用javascript?

2 个答案:

答案 0 :(得分:1)

您可以使用Html.DropDown帮助程序。这个帮助器使用您显示的选项获得IEnumerable。 在控制器中,您可以在ViewBag中或使用视图模型发送下拉列表的值。视图模型的此属性必须是带有SelectListItem的List,其中包含两个选项Yes和No,然后使用过滤器的值选择正确的选项,如下所示:

ViewBag.Status = new List<SelectListItem>(){
     new SelectListItem
     {
        Value = "Yes",
        Text = "Yes",
        Selected = yourFilter.FilterStatus  //If your status is Yes this will be true 
                                            //otherwise false.
     },
     new SelectListItem
     {
        Value = "No",
        Text = "No",
        Selected = yourFilter.FilterStatus  //If your status is No this will be true 
                                            //otherwise false.
     }
};

然后在您的视图中,您可以使用Html帮助程序打印下拉列表:

 @Html.DropDownList("Status", "--Select--")

使用ViewBag时要小心,属性的名称必须与帮助程序上的名称相匹配,这将与表单在提交表单时发送回控制器的名称相同。

如果您使用View Model版本,我建议您进行测试,则必须创建该视图模型并将下拉值分配给该属性,如下所示:

//Don't create this class on the controller! This is only as an example.
public class FilterViewModel {
   public bool Status {get; set;}
   public IEnumerable<SelectListItem> statusDropDown {get; set;}
}

var myViewModel = new FilterViewModel();
myViewModel.statusDropDown = new List<SelectListItem>(){
     new SelectListItem
     {
        Value = "Yes",
        Text = "Yes",
        Selected = yourFilter.FilterStatus
     },
     new SelectListItem
     {
        Value = "No",
        Text = "No",
        Selected = yourFilter.FilterStatus
     }
};

return View(myViewModel);

您可以在视图中使用以下帮助程序:

@model Controllers.YourController.FilterViewModel
@Html.DropDownListFor(model => model.Status, Model.statusDropDown, "--Select--")

答案 1 :(得分:0)

@model Filter

@Html.DropDownListFor(model => model.FilterStatus, new SelectList(
    new List<SelectListItem> { 
        new SelectListItem { Text = "Yes", Value = "Yes" },
        new SelectListItem { Text = "No", Value = "No" }  
    }, "Value", "Text"), 
    "--- Select Option ---", new { @class = "k-dropdown" })