设置DropDownListFor的值

时间:2014-12-08 12:10:45

标签: asp.net-mvc razor

我试图设置Razor DropDownListFor控件的值。我已经尝试了几乎所有我能想到的方法来设置所选的值(在渲染控件之后使用js,这实际上是最后的手段),但是当控件呈现时它仍然没有显示所选的值。我可以假设我错过了一些非常明显的东西。这是代码:

@{
List<string> arrTitles = new List<string>("Mr,Mrs,Miss,Ms,Dr,Lady,Lord,Prof,Rev,Sir".Split(','));
List<SelectListItem> lstTitle = new List<SelectListItem>();

foreach (string title in arrTitles)
{
    SelectListItem sli = new SelectListItem { Text = title, Value = title };
    if (Model != null)
    {
        if (title == Model.title)
        {
            sli.Selected = true;
        }
    }
    lstTitle.Add(sli);
}
string formHandler = ViewBag.FormHandler;
}
@using (Html.BeginForm(formHandler, "Home", FormMethod.Post))
{

@Html.LabelFor(r => r.title)
@Html.DropDownListFor(r => r.title, new SelectList(lstTitle, "Value", "Text", "Selected"));

}

有什么想法吗?

2 个答案:

答案 0 :(得分:0)


简答


尝试使用

@Html.DropDownList("1stTitle")

其中标题是

ViewBag.Title = new selectlist(1stTitle);

有关详细信息,请参阅页面中间的this article


更详细


在您的控制器中,添加如下内容:

var Title= new List<string>();

    var listOfTitles= //place list of titles here

    Title.AddRange(listOfTitles.Distinct());
    ViewBag.personsTitle = new SelectList(Title);

然后,在您看来:

@using (Html.BeginForm()
    {
    <p>
        title: @Html.DropDownList("personsTitle ", "All")

        <input type="submit" value="Filter" />
    </p>
    }

这比 MVC 更好,因为它可以使您的控制器代码远离您的视图(这应该只是用于查看代码的结果)。< / p>

您的实际选择&#39;代码应始终保存在您的控制器中,因为在服务器而不是客户端上进行任何计算要好得多/快得多。

答案 1 :(得分:0)

尝试以下内容:

@{
List<string> arrTitles = new List<string>("Mr,Mrs,Miss,Ms,Dr,Lady,Lord,Prof,Rev,Sir".Split(','));
List<SelectListItem> lstTitle = new List<SelectListItem>();
string selected = null; 

foreach (string title in arrTitles)
{
SelectListItem sli = new SelectListItem { Text = title, Value = title };
if (Model != null)
{
    if (title == Model.title)
    {
        selected = title;
    }
}
lstTitle.Add(sli);
}
string formHandler = ViewBag.FormHandler;
}
@using (Html.BeginForm(formHandler, "Home", FormMethod.Post))
{

@Html.LabelFor(r => r.title)
@Html.DropDownListFor(r => r.title, new SelectList(lstTitle, "Value", "Text", selected));

}