使用EditorFor时,表单POST会给出空模型字段

时间:2017-11-22 11:25:51

标签: c# asp.net-mvc

目前我有一个表格,我想放在多个视图中。目前,当我提交此表单时,模型返回对于它的所有值都为null,我不确定为什么。

当我通过它进行调试时,它正在到达POST事件,但模型值为null。 (不是模特本身)。

联系模式

public class ContactModel : BasePageModel
{
    public string Introduction { get; set; }
    public ContactForm Form { get; set; }
    public ContactModel(TreeNode node, ContactForm form = null) : base(node)
    {
        Introduction = node.GetEditableTextStringValue("Introduction", String.Empty);
        Form = form;
    }
}

查看表单的模型

public class ContactForm
{
    public string Title { get; set; }
    public string FirstName { get; set; }
    ....
}

控制器

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SendContact(ContactForm model)
{
    // Do stuff
}

如果您要提交我要提交的联系表单,这是我想要“嵌入”的页面视图。

@model MVCApp.Models.PageModels.ContactModel
....
@using (Html.BeginForm("SendContact", "Contact", FormMethod.Post))
{
    @Html.AntiForgeryToken()
    @Html.EditorFor(model => model.Form)
}

联系表格本身的编辑模板

@model MVCApp.Models.FormModels.ContactForm
....
@Html.LabelFor(model => model.Title)
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title, "")

@Html.LabelFor(model => model.FirstName)
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName, "")

....
<input type="submit" value="Submit" />

表单正确呈现两个部分(周围的文本和字段)以及联系人表单。但正如我上面提到的那样,当我点击提交时,在POST中传回给控制器的模型(通过调试它会点击)将其所有字段都设为null。

我可能出错的任何指示都会很棒。

1 个答案:

答案 0 :(得分:2)

将此标记为答案,因为Stephens评论无法标记为此。

使用Stephens建议,我将ActionResult更改为使用

        public ActionResult SendContact([Bind(Prefix = "Form")]ContactForm model)

它完美无缺。字段和模型填充正确。

相关问题