1

我想将下拉列表中的存储值显示为选定值。我不知道如何在 MVC 中做到这一点。

我的代码是

<%: Html.DropDownList("basic-qualification-container" + i.ToString(), 
         new SelectList((IEnumerable<Dial4Jobz.Models.Degree>)ViewData["CandidateBasicQualifications"], "Id", "Name", (IEnumerable<int>)ViewData["BasicQualificationDegrees"]), 
         new { @class = "qualification" })%> 

我从下拉列表中选择一些选项并提交。加载页面后,将显示最后存储的值。这是我的问题。

4

2 回答 2

1

您可能为 selectedValue 参数发送了错误的值。您应该在 SelectList 构造函数中设置值。

<%: Html.DropDownList("basic-qualification-container" + i.ToString(), 
         new SelectList((IEnumerable<Dial4Jobz.Models.Degree>)ViewData["CandidateBasicQualifications"],
                        "Id", 
                        "Name",
                        ViewData["selectedValue"]), //set selected value here
         new { @class = "qualification" })%> 

更好的方法是将 ViewData 中的所有数据放入模型中,然后将其强类型化到您的视图中。

以下是您定义模型的方式:

public class SampleModel
{
    private string SelectedOption { get; set; }
    private IEnumerable<SelectListItem> Options { get; set; }
}

然后在您的操作方法中提供值:

public ActionResult Index()
{
    //get data from db
    SampleModel model = new SampleModel
                            {
                                SelectedOption = selectedOption,
                                Options = new SelectList(options, "Id", "Name")
                            };
    return View(model);
}

在将视图强输入到 SampleModel 之后,您可以在视图中使用 Html.DropDownListFor 助手。

<%: Html.DropDownListFor(model => model.SelectedOption,
                         Model.Options,
                         new { @class = "qualification" }) %>
于 2012-10-10T12:16:40.630 回答
0

SomeAction 视图中的 DropDownList 助手

Html.DropDownList(
    string name,
    IEnumerable<SelectListItem> selectList,
    ViewData["lastSelected"],  // String Selected Option
    object htmlAttributes) 

您可以使用 viewData 显示选定的值,如下所示。

控制器

// Set Default selected
public ActionResult SomeAction()
{
    ViewData["lastSelected"] = "Default Text";
    return View();
}

发布后,您应该再次设置所选值中显示的 viewData。

// Set selected value after posting
[HttpPost]
public ActionResult SomeAction()
{
    .....
    ViewData["lastSelected"] = "Changed Text (selected value)";
    return View();
}
于 2012-10-10T12:10:44.130 回答