【发布时间】:2016-11-24 01:44:12
【问题描述】:
有没有一种方法可以在不使用强类型 HTML 帮助器的情况下从视图中获取模型对象到控制器中。视图使用Account 实体但需要发布表单并检索在foreach 循环中运行的变量的帐户实体,该循环用于生成值的表/网格。下拉列表中的信息用于不同的实体,因此它不是强类型的。
public class HomeController : Controller
{
// GET: Home
ModelContext model = new ModelContext();
[HttpGet]
public ActionResult Index()
{
return View(model.accounts.ToList());
}
[HttpPost]
public ActionResult Index(Account account,List<string> status,string name)
{
// return student object
return View();
}
}
视图中的其余代码在foreach 循环上运行,以生成包含在@HTML.BeginForm 中的html table
<td>
@Html.DropDownList("status",
new SelectList(Enum.GetValues(typeof(ProjectName.Models.Code))),
"...",
new { @class = "form-control" })
</td>
<td>
@Html.TextArea("comment");
</td>
【问题讨论】:
-
您的
DropDownList()方法只回发一个值,因此参数必须是string status(而不是List<string> status)。但是话虽如此,您应该使用包含视图中所需的所有属性的视图模型,以便您可以对其进行强绑定、获取验证等。 -
它返回一个输入数组,因为它在 foreach 循环中运行
-
然后你生成无效的html作为开始!你肯定需要一个视图模型来正确处理这个
-
但是视图模型将如何与上下文类一起工作? @StephenMuecke
-
什么
Context类? - 你指的是你的数据库上下文吗? - 是这样,那么与它没有关系 - 您将数据模型映射到视图模型,反之亦然
标签: c# .net asp.net-mvc entity-framework