0

最初のコメントに続いて更新

モデルには「Account」というオブジェクトがあり、そのオブジェクトには int プロパティ (Account.AccountID) があります。

ViewB には、いくつかの追加情報を収集するフォームがありますが、Model.Account.AccountID が入力されたテキスト ボックスもあります。

ただし、ViewB を送信すると、Model.Account が null になります。


問題を説明する前に、私が持っているものの単純化されたバージョンを示す方がおそらく簡単です:

[HttpGet]
public ActionResult ViewA()
{
  return View(new BlahModel());
}

[HttpPost]
public ActionResult ViewA(BlahModel model)
{
  if(there_was_a_problem)
    return View("ViewA", model);
  else
    return View("ViewB", model);
}

// have tried both httppost, httpget and no attribute here
public ActionResult ViewB(BlahModel model)
{
 return View(model);
}

GET 経由で ViewA をロードし、厳密に型指定されたフォームに入力して送信します。次に、次のビュー (リクエストに問題がなければ ViewA または ViewB のいずれか) は問題ありません...モデル全体に​​完全にアクセスでき、次のことができます。その中のプロパティを表示します。

問題は、ViewB (ActionResult ViewB に投稿) でフォームを送信すると、同じモデルを使用しているにもかかわらず、モデル全体で突然 null プロパティが発生し、投稿の前にすべての値が正常に取得されたことです。

何か案は?

どうもありがとう

4

2 に答える 2

1

最も可能性が高いのViewBは、ビューが十分にレンダリングされず、モデル バインダーがバインドする値を見つけられないことです。

アクション引数はフォーム値からバインドされます。モデルをビューに正しく渡すかどうかは問題ではありません。物事をレンダリングすることが重要です(またはクエリ文字列/ Cookieを通過します)。

于 2010-09-24T11:47:33.203 に答える
1

Arnis L.'s answerを補完すると、Firebug などのツールを使用して、モデルのパラメーター (またはすべてのパラメーター) がリクエストに沿って送信されていることを確認できます。

于 2010-09-24T11:55:20.813 に答える