我希望这会起作用:(调试时隐藏的输入似乎指向一个对象,但在帖子中没有任何显示。这是我尝试过的(请注意,为了简洁起见,这是一个示例)
模型
public class myViewModel
{
public MyObject MyObject { get; set; }
public int MyNumber { get; set; }
}
控制器
public ActionResult displaySimpleView()
{
var mVM = new myViewModel();
mVM.MyObject = //let MyObject be filled with 10 fields of data
return View(mVM);
}
看法
@model namespace.myViewModel
//display the fields of data
@using (Ajax.BeginForm("Complete", ajaxOpts))//simple Ajax Options not really relevant
{
@Html.ValidationSummary(true)
@Html.HiddenFor(m => m.MyObject)
@Html.EditorFor(m => m.MyNumber)
<p><input type="submit" value="Go" /></p>
}
再次控制器
[HttpPost]
public ActionResult getMyObject(myViewModel mVM)
{
mVM.MyObject is null here.
mVM.MyNumber has a value.
return RedirectToAction("someGetAction");
}
如何将 MyObject 传递给 getMyObject?我宁愿不必为每个属性都有一个隐藏字段,然后重新映射,因为其中一些属性是嵌套对象。