部分形式不与模型绑定

时间:2013-05-07 11:14:32

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我的页面基本上显示了由数据库支持的文章。

在该文章下方,有一个评论部分。这是由@Html.Action调用提供的,返回_Comments partial。

在_Comments部分内。有一个可选的_AddComment @ Html.Action调用,在其中呈现_AddComment部分。

_AddComment partial由GET和POST的_AddComment控制器方法支持。

[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult _AddComment(EditComment comment)

GET方法只返回附带AssetID的“EditComment”VM。

每当评论填写并在_AddComment视图中发布时。它的控制器方法被正确调用,但模型没有被传回。

如果我查看Request参数,我可以看到正确传回模型的所有属性。但是,它没有绑定到Controllers方法参数。

我尝试将“Model”指定为Html.Begin表单的路径参数。它没有任何区别。

看过很多SO帖子,这些都不是我遇到的问题!

据推测,模型绑定由于某种原因在某处失败了。但显然毫无例外,我不知道出了什么问题!

查看型号代码

public class EditComment
{
    public Boolean HasRating { get; set; }
    public int AssetID { get; set; }
    public int CommentID { get; set; }
    public int Rating { get; set; }
    public string Comment { get; set; }
}

查看代码

@model SEISMatch.UI.Models.Content.EditComment

<hr />

<h3><span class="colored">///</span> Leave a Comment</h3>

<div class="row" style="margin-top: 20px;">
    @using (Html.BeginForm("_AddComment", "Content", Model, FormMethod.Post))
    {    
        @Html.ValidationSummary(false)
        @Html.AntiForgeryToken()
        @Html.HiddenFor(m => m.AssetID)
        @Html.HiddenFor(m => m.CommentID)

        if (Model.HasRating)
        {
            @Html.EditorFor(m => m.Rating, "_StarRating")
        }

        <div class="span7">
            @Html.TextAreaFor(m => m.Comment, new { @class = "span7", placeholder = "Comment", rows = "5" })
        </div>
        <div class="span7 center">
            <button type="submit" class="btn btn-success">Post comment</button>
        </div>
    }
</div>

1 个答案:

答案 0 :(得分:1)

您的操作参数名称是注释,类EditComment具有属性注释。模型绑定器感到困惑。

重命名您的操作参数并解决问题。

[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult _AddComment(EditComment model)