0

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

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

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

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

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

    ...
    ...

}

我是否需要为每个表创建单独的ActionResult方法来填充数据?或者我是否对 Index() 使用方法重载,例如 Index(Country country)、Index(Company comp)、Index(Branch branch)?

下一个问题是,由于会有不同的 ActionResult 方法,我是否需要为此创建单独的视图?我正在使用简单的 MVC 结构。我没有 ViewModel 或 MVC 以外的其他东西。

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

提前感谢您的帮助。

4

2 回答 2

0

不,您不需要为每种类型单独操作,我只需将这些值扔到 ViewBag 中并在视图中读取(这是将其加载到下拉元素中的方法):

公共类 HomeController :控制器 { 私有 CorpCostEntities 数据库;

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。

于 2012-11-29T17:42:13.190 回答
0

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

然后,您将拥有实际 CorpCostModel 的属性,以及您的查找集合的属性和您在视图中需要的其他内容。

您可以按如下方式创建一个编辑器:@Html.EditorFor(model => model.CorpCostModel.SomeField) 和一个列表框为@Html.DropDownListFor(model => model.CorpCostModel.CorpCountryId, new SelectList(Model.CountryList, "CountryId “, “国家的名字”), ””)

于 2012-12-03T13:28:00.723 回答