从数据库条目创建DropDownList,然后在表单提交中绑定它

时间:2010-07-04 07:25:27

标签: c# asp.net asp.net-mvc modelbinders model-binding

我有一个存储在数据库表中的枚举条目,只有以下字段:IDName。我想在表单上的DropDownList中显示存储在此表中的值。然后,用户选择一个值并提交表单。

I found a way to easily create a DropDownList from an enumeration(尽管最好只使用表中所有记录的Name字段填充DropDownList)。但是,我还没有找到一种方法将以后绑定表单提交中的DropDownList转换为整数值,以便将其他表单值放入数据库(FK-PK)。

您能提供一些示例代码来说明如何进行此类绑定吗?

更新:感谢您的回答。我还有一个问题:是否可以通过AJAX 获取DropDownList内容并将其放入DropDownList并放入ViewModel中的SelectList(包含ID和Name参数)?我想根据用户输入选择性地获取内容,然后我希望ViewModel可以填充所获取的数据。

1 个答案:

答案 0 :(得分:2)

一如既往地从定义模型开始:

public class MyViewModel
{
    public int SelectedValue { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

然后是控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            // TODO: Fetch from the database some enumerable collection 
            // containing Id and Name
            Items = new SelectList(new[]
            {
                new { Id = 1, Name = "item 1" },
                new { Id = 2, Name = "item 2" },
            }, "Id", "Name")
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        // TODO: Do something with model.SelectedValue
        return RedirectToAction("index");
    }
}

最后是强类型视图:

<% using (Html.BeginForm()) { %>
    <%: Html.DropDownListFor(x => x.SelectedValue, Model.Items) %>
    <input type="submit" value="OK" />
<% } %>