模型容器内的一个视图和多个模型
本文关键字:模型 一个 视图 | 更新日期: 2023-09-27 18:02:37
大家好,我有一个小麻烦与我的方法[HTTPost],请参阅我的代码下面:
MODELS(模型Case和Person有比这里更多的属性)
public class Case
{
public string caseNumber
{
get;
set;
}
}
public class Person
{
public string name
{
get;
set;
}
public string lastName
{
get;
set;
}
}
public class ModelViewContainer {
public Person Person {
get;
private set;
}
public Case Case{
get;
private set;
}
public ModelViewContainer (Person person, Case casep)
{
Persona = persona;
Case = casep;
}
}
IN MY CONTROLLER
public ActionResult PresentView() {
return View(new ModelViewContainer(new Person(),new Case()));
}
[HttpPost]
public ActionResult PresentView(ModelViewContainer model) **<--never enters here**
{
if (ModelState.IsValid){
....
}
else
return View(model);
}
视图<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication1.Models.ModelViewContainer>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm()) {%>
<%: Html.ValidationSummary(true) %>
Name
<%: Html.TextBoxFor(model => model.Persona.nombre)%>
<%: Html.ValidationMessageFor(model => model.Persona.nombre)%>
LastName
<%: Html.TextBoxFor(model => model.Persona.apellido)%>
<%: Html.ValidationMessageFor(model => model.Persona.apellido)%>
Case Number
<%: Html.TextBoxFor(model => model.Case.caseNumber)%>
<%: Html.ValidationMessageFor(model => model.Case.caseNumber)%>
<p>
<input type="submit" value="Create" />
</p>
<% } %>
</asp:Content>
结果错误是:System。MissingMethodException:该对象没有定义无参数构造函数。
是否可以在httpost中捕获模型?如果不是,我该怎么办?(请原谅我的英语)请帮帮我。
编辑——修正
public class ModelViewContainer {
public Person Person {
get;
set; //not private
}
public Case Case{
get;
set; //not private
}
public ModelViewContainer (Person person, Case casep)
{
Persona = persona;
Case = casep;
}
public ModelViewContainer (){ //add parammeter less constructor
}
}
Net MVC不能与不可变模型一起工作;它没有意识到它可以将属性值作为构造函数参数传递。
你的ModelViewContainer
需要一个无参数的构造函数和可写属性。
或者,您可以编写自己的ModelBinder
,它知道如何做到这一点。(我不推荐这个选项)