我有一個索引視圖,我得到了一個包含不同公式視圖的表單。模型沒有在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所需的元數據以保持輸入的正確命名 –