从数据库下拉列表中选择的值

时间:2012-10-10 11:55:24

标签: html asp.net-mvc

我想将下拉列表中的存储值显示为选定值。我不知道如何在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" })%> 

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

2 个答案:

答案 0 :(得分: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" }) %>

答案 1 :(得分:0)

在SomeAction视图中的

DropDownList Helper

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();
}