我有一个索引视图,其中包含一个表单,该表单包含不同表格的部分视图。
@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--;
输入模型有几个“子模型”,就像这样:
public Step1Model Step1 { get; set; }
public Step2Model Step2 { get; set; }
public Step3Model Step3 { get; set; }
这些数据将传递给局部视图以填充它们。现在的问题是,我在控制器中的HttpPost方法中总是得到一个空的模型。我做错了什么?
Html.EditorFor(Model.Step1)
,然后为Step1Model
等添加编辑器模板 - 这将处理命名问题;如果你正在使用RenderPartial
,那么很难传输MVC所需的元数据以保持输入名称的正确性。 - Andras Zoltan