【发布时间】:2015-03-09 19:32:35
【问题描述】:
我有模型 POCO,它只存储来自用户的常用信息,并用于在其他地方提交和预填充表单。
我有 ViewModels(这是正确的术语吗?)填充下拉列表,有时通过从 XML 配置中收集信息。
我将所有这些类组合成一个超类,然后传递回页面,这样我就可以使用 razor 语法预填充表单数据和表单元素。
我这样做正确吗?这些东西应该是这样使用的吗?来自 webforms 背景,似乎 MVC 做最简单的事情变得非常复杂。诚然,分离关注点和缩短代码使其更易于维护。
欢迎任何一般性建议!谢谢!
编辑 2015 年 3 月 10 日: 这里有一些代码来说明我的意思:
//Models
public class FormData
{
public int PersonID { get; set; }
public string ItemName { get; set; }
}
public class FormElements
{
public IEnumerable<SelectListItem> getSelectList (string DropdownListDesired)
{
//... get selectlist from XML config with linq
return query;
}
}
public class FormViewBag
{
public FormViewBag
{
DataOnForm = new FormData();
ElemOnFOrm = new FormElements();
}
public FormData DataOnForm { get; set; }
public FormElements ElemOnForm { get; set; }
}
//Controller Method
[HttpGet]
public ActionResult Index()
{
FormViewBag ViewBagOnForm = new FormViewBag();
return View(ViewBagOnForm);
}
//CSHTML
@Html.DropDownListFor(m => m.FormData.ItemName, Model.FormElements.getSelectList("FavoriteRedStaplers"))
我了解此代码可能有误且完全被误导,但我想找出原因。
如您所见,我假设当您将视图绑定到模型时,它基本上是您自定义的一个对象,而不是直接使用 ViewBag。
在 FormViewBag 的构造函数中新建对象可能是不必要的,但请告诉我一些替代方案。
【问题讨论】:
-
尝试发布一些代码。如果你有很多代码需要审查,试试codereview.stackexchange.com
-
不可能说清楚,因为你真的很模糊,而且很可能以不正确的方式使用术语。最好的办法是举例说明你的意思。
标签: c# asp.net-mvc-4 razor viewmodel