C# 部分中的表单不绑定到模型

C# 部分中的表单不绑定到模型,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我有一个页面基本上显示了一篇由数据库支持的文章 在那篇文章下面,有一个评论部分。这是由@Html.Action调用提供的,该调用返回一个_注释部分 在这一范围内"部分评论"。有一个可选的_AddComment@Html.Action调用,在其中呈现一个_AddComment部分 对于GET和POST,_AddComment部分由_AddComment控制器方法支持 [HttpPost] [ValidateAntiForgeryToken()] public ActionResult _AddCo

我有一个页面基本上显示了一篇由数据库支持的文章

在那篇文章下面,有一个评论部分。这是由@Html.Action调用提供的,该调用返回一个_注释部分

在这一范围内"部分评论"。有一个可选的_AddComment@Html.Action调用,在其中呈现一个_AddComment部分

对于GET和POST,_AddComment部分由_AddComment控制器方法支持

[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult _AddComment(EditComment comment)
GET方法只返回一个带有AssetID的“EditComment”VM

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

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

我已经尝试指定“Model”作为Html.Begin表单的路由参数。没什么区别

我看过很多这样的帖子,没有一篇是我现在遇到的问题

可能由于某种原因,模型绑定在某个地方失败了。但很明显,毫无例外,我不知道出了什么问题

视图模型代码

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>
@model SEISMatch.UI.Models.Content.EditComment

///留言 @使用(Html.BeginForm(“\u AddComment”,“Content”,Model,FormMethod.Post)) { @Html.ValidationSummary(false) @Html.AntiForgeryToken() @Html.HiddenFor(m=>m.AssetID) @Html.HiddenFor(m=>m.CommentID) if(型号额定值) { @Html.EditorFor(m=>m.Rating,“\u星号”) } @text区域(m=>m.Comment,新的{@class=“span7”,placeholder=“Comment”,rows=“5”}) 发表评论 }
您的操作参数名称是comment,而类EditComment具有属性comment。Modelbinder感到困惑

重命名动作参数并解决问题

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

你能发布你的视图模型和视图吗?你能发布EditComment类的代码并发布参数(名称:value)吗?谢谢。我忍不住觉得MVC有时在幕后依赖很多黑魔法!