Asp.net mvc 4 如何在MVC4(空模型)中发布此模型
我的问题很常见,但我自己似乎无法解释为什么在发布模型时它是空的。我的FormCollection似乎表明它不了解它发布的整个模型。见下面的代码: 我的模型-CaseForm.csAsp.net mvc 4 如何在MVC4(空模型)中发布此模型,asp.net-mvc-4,model,http-post,nul,Asp.net Mvc 4,Model,Http Post,Nul,我的问题很常见,但我自己似乎无法解释为什么在发布模型时它是空的。我的FormCollection似乎表明它不了解它发布的整个模型。见下面的代码: 我的模型-CaseForm.cs namespace Models.CaseForm { public class CaseForm { public CaseForm() { this.Person = new Person(); this.Case =
namespace Models.CaseForm
{
public class CaseForm
{
public CaseForm()
{
this.Person = new Person();
this.Case = new Case();
this.Cases = new List<Case>();
}
public string strMessage;
public bool isValidModel;
public Person Person = new Person();
public Case Case = new Case();
public List<Case> Cases = new List<Case>();
}
}
我的FormCollection
在我的表单集合中,它只解释case对象,它应该显示:
- 短信
- isValidModel
- 案例obj
- 案例收集
- 个人目标
为什么这个模型发布不正确?您的属性需要getter和setter。
DefaultModelBinder
创建了CaseForm
的一个新实例,但是可以设置其属性的值,因为这些属性没有setter
public class CaseForm
{
public string strMessage { get; set; }
public bool isValidModel { get; set; }
....
public List<Case> Cases { get; set; }
}
然后为同一属性创建一个文本框
@Html.TextBoxFor(m => m.Case.CaseRef)
您需要删除
HiddenFor
,因为它只会在回发时绑定第一个值(隐藏输入中的值),而忽略第二个值(文本框中的值)谢谢!我没有意识到我忘记了模型中那些对象的get/set。
public class CaseForm
{
public string strMessage { get; set; }
public bool isValidModel { get; set; }
....
public List<Case> Cases { get; set; }
}
@Html.HiddenFor(m => m.Case.CaseRef)
@Html.TextBoxFor(m => m.Case.CaseRef)