1

我是第一次使用 MVC4。我了解了它的一些基本逻辑。

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

如何使用模型、视图和控制器来实现这一点?请帮我提供示例代码..

4

2 回答 2

1

您可以参考这篇文章了解详细信息。由于您刚刚了解了 MVC 的基本概念,因此该帖子还有一个使用示例 NorthWind 数据库在 MVC 中添加下拉列表的基本示例。

于 2013-07-28T13:58:50.307 回答
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>
}
于 2013-08-01T02:26:33.483 回答