在ASP.Net MVC4中的一个页面上的多个下拉列表中填充多个表数据

时间:2012-11-28 14:50:25

标签: asp.net-mvc controller asp.net-mvc-4 html.dropdownlistfor

作为一个新手,请原谅我的琐碎问题。 (ASP.Net MVC4)

在阅读了很多帖子/教程后,我仍然不确定如何处理。我想要做的是在我的索引页面上有三个下拉列表。例如,国家/地区,公司,分支机构。我有相同的数据模型,使用EF链接到我的数据库。我已设法列出索引页面上的所有数据。但是我需要在下拉列表中。

问题是如何为此创建控制器?目前控制器看起来像:

public class HomeController : Controller
{
    private CorpCostEntities db = new CorpCostEntities();

    public ActionResult Index()
    {
        return View();
    }

    ...
    ...

}

我是否需要为每个表创建单独的 ActionResult 方法来填充数据?或者我是否为Index()使用方法重载,例如Index(国家/地区),Index(公司comp),Index(分支机构)?

接下来的问题是因为会有不同的ActionResult方法,我是否需要为此创建单独的视图?我使用的是简单的MVC结构。我没有ViewModel或MVC以外的东西。

首先为多个下拉列表创建控制器然后在现有View页面中显示它们的方法究竟是什么?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

不,您不需要为每种类型单独执行操作,我只需在ViewBag中抛出这些值并在视图中读取(Here is how to load it into dropdown element):

public class HomeController:Controller {     私人CorpCostEntities db;

public HomeController(){
db = new CorpCostEntities();
ViewBag.CountryList = db.GetCountryList();
ViewBag.CompanyList = db.GetCompanyList();
ViewBag.BranchList = db.GetBranchList();
}
public ActionResult Index()
{
    return View();
}

}

关于“下一个问题是因为会有不同的ActionResult方法,我是否需要为此创建单独的视图?”,我有点不清楚你在问什么,但我会给它一个假设。 ...将您的(GET)ActionResults视为页面(您的操作方法不仅仅是锁定在返回的'页面'中,而是与我一起承担)。假设您有一个显示客户列表的操作“索引”,您将拥有索引操作和索引视图。现在,添加一个Edit屏幕,它将是另一个Action,Edit和View,Edit.cshtml。

答案 1 :(得分:0)

您可能还想考虑创建一个ViewModel(CorpCastViewModel),其中包含渲染视图所需的所有对象。

然后,您将获得实际CorpCostModel的属性,以及查看集合的属性以及视图中所需的其他内容。

您可以按如下方式创建编辑器: @ Html.EditorFor(model => model.CorpCostModel.SomeField) 和列表框 @ Html.DropDownListFor(model => model.CorpCostModel.CorpCountryId,new SelectList(Model.CountryList,“CountryId”,“CountryName”),“”)