所以我目前有一个需要整个数据实体用于显示目的的视图,但我只想将一个表的数据发布到控制器并验证它。
@model MvcExample.Models.DataEntities
@using(Html.BeginForm("ActionMethod", "Controller")){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<table id="setupTable">
<tr>
<td>@Html.LabelFor(model => model.DataField.Local.First().data, "Data:")</td>
<td>@Html.TextBoxFor(model => model.DataField.Local.First().data, new{id="dataField"})
@Html.ValidationMessageFor(model => model.DataField.Local.First().dataField)
</td>
</tr>
<input type="submit" value="submit" />
}
是否可以将其发布到ActionMethod并使用ModelState.IsValid?
[ActionName("Setup")]
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult ActionMethod(FormCollection formCollection)
{
if( ModelState.IsValid )
{
// Do Stuff
db.SaveChanges();
}
var dataField= new DataField();
db.DataField.Add( dataField);
return View( db );
}
答案 0 :(得分:1)
想象一下,你有这两个模型。 MainModel
是您的整个数据集,SubsetModel
是您需要回发给Controller Action的数据。
public class MainModel
{
public FieldOne First {get;set}
public FieldTwo Second {get;set}
public FieldThree Third {get;set;}
public FieldFour Fourth {get;set;}
}
public class SubsetModel
{
public FieldOne First {get;set;}
public FieldTwo Second {get;set;}
}
可以告诉您的Controller Action只是期望SubSetModel重新发布。
public ActionResult DoSomething(SubsetModel subset)
{
//do something
}
在您的视图中,您需要在表单中包含相关字段,或使用Javascript / JQuery将数据发布回Controller。只要表单中的字段具有正确的名称,模型绑定器就会创建您的操作所期望的SubsetModel