使用MVC3 / 4中的动态内容实现下拉列表菜单

时间:2013-07-28 12:19:18

标签: asp.net-mvc asp.net-mvc-4 drop-down-menu

我第一次使用MVC4。我得到了一些逻辑基础。

我希望显示一个下拉列表,其中包含一些动态内容(数据来自数据库)。

如何使用模型,视图和控制器来实现此功能?请帮我提供示例代码..

2 个答案:

答案 0 :(得分:1)

您可以参考this post了解详情。由于您刚刚获得了关于MVC的基本想法,该帖子还有一个使用示例NorthWind数据库在MVC中添加dropdownlist的基本示例。

答案 1 :(得分:1)

这应该是一个很好的开始。

模型\ FooModel.cs

public class FooModel
{
    public string Key { get; set; }
    public string Text { get; set; }
}

模型\ FooModelList.cs

public class FooModelList
{
    public int SelectedFooId { get; set; }
    public IEnumerable<FooModel> Foos { get; set; }
}

控制器\ HomeController.cs

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new FooListModel
                        {
                            SelectedFooId = 0,
                            Foos = GetFooModels()
                        };

        return View(model);
    }

    [HttpPost]
    public ActionResult Index(FooListModel model)
    {
        if (ModelState.IsValid)
        {
            // do something with model
            return RedirectToAction("View", "Foo", new { Id = model.Key });
        }

        // somethings wrong.. 
        model.Foos = GetFooModels();
        return View(model);
    }

    private IEnumerable<FooModel> GetFooModels()
    {
        var dbContext = new FooDbContext();
        var fooModels = dbContext.Foos.Select(x =>
                            new FooModel
                            {
                                Key = x.Key,
                                Value = x.Value
                            };

        return fooModels.ToList();
    }
}

视图\主页\ Index.cshtml

@model MvcApp.Models.FooListModel
@{
    var fooList = new SelectList(Model.Foos, "Key", "Value");
}

@using (Html.BeginForm("DealSummaryComparison", "Reporting", FormMethod.Post)) {
    <div>
        Foos: @Html.DropDownListFor(x => x.SelectedFooId, fooList)
    </div>
    <div>
        <input type="submit" value="Submit" />
    </div>
}