私はインデックスビューを持っています。ここでは、別のフォーミュラの部分ビューを含むフォームがあります。私のコントローラでASP.NET MVC 3でモデルが渡されない
@Html.ValidationSummary(true, "Beheben Sie die Fehler, und wiederholen Sie den Vorgang.")
@using (Html.BeginForm())
{
object mod = null;
switch (Model.Step)
{
case 1:
Html.RenderPartial("Step1", Model.Step1);
break;
case 2:
Html.RenderPartial("Step2", Model.Step2);
break;
default:
Html.RenderPartial("Step0");
break;
}
<p>
@if (Model.Step > 100000)
{
<button name="button" value="Zurück" />
}
@if (Model.Step != 0)
{
<input type="submit" name="submit" value="Zurück" /> <input type="submit" name="submit"
value="Weiter" id="Weiter" /> <input type="submit" name="submit" value="Abbrechen" />
}
</p>
}
私はこのようなものだ:
[HttpPost]
public ActionResult Index(InputModel model, string submit, HttpPostedFileBase file)
{
if (String.IsNullOrEmpty(submit))
submit = "";
if (submit == "Weiter")
model.Step++;
if (submit == "Zurück")
model.Step--;
をInputModelは、このようないくつかの「サブモデル」を持っている:
に部分図に渡されpublic Step1Model Step1 { get; set; }
public Step2Model Step2 { get; set; }
public Step3Model Step3 { get; set; }
それらを埋める。 問題は今私のコントローラのHttpPostに空のモデルが常にあることです。 私は何が間違っていますか?
生成されたHTMLコードの入力ボックスの名前を見てください。彼らは間違っているはずです。あなたの行動は "Step1Model_Property"のようなものを期待しています。正しい名前を取得する方法の詳細については、http://msdn.microsoft.com/en-us/library/ee407414.aspx – ChrisB
@ChrisBに同意します。あなたは 'Html.EditorFor(Model.Step1)'を使うべきです。 'Step1Model'等のためのエディタテンプレートを追加してください。これは命名の世話をします。 'RenderPartial'を使用している場合は、MVCが入力の名前を正しく保持するために必要なメタデータを送信するのが難しいです。 –