2

私はこれがうまくいくことを望んでいました:(デバッグすると、非表示の入力がオブジェクトを指しているように見えますが、投稿には何も表示されません。

モデル

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 に渡すにはどうすればよいですか? これらのプロパティの一部はネストされたオブジェクトであるため、プロパティごとに隠しフィールドを作成してから再マップする必要はありません。

4

1 に答える 1

2

意見:

@{
  TempData["passMyObject"] = Model.MyObject;
 }

コントローラーポスト:

var myObject = TempData["passMyObject"];
于 2012-04-05T00:01:23.957 に答える