局部表单不绑定到模型

本文关键字:模型 绑定 表单 局部 | 更新日期: 2023-09-27 18:12:40

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

在那篇文章下面,有一个评论区。这是由@Html提供的。操作调用返回_Comments部分。

在_Comments部分中。有一个可选的_AddComment @Html。在其中呈现_AddComment部分的动作调用。

_AddComment部分是由_AddComment控制器的GET和POST方法支持的。

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

GET方法只返回一个附加了AssetID的"EditComment"VM。

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

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

我已经尝试指定"模型"作为路由参数的Html。开始形成。这没什么区别。

看过一些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>

局部表单不绑定到模型

您的操作参数名称为comment,类EditComment具有属性comment。Modelbinder搞混了。

重命名操作参数,问题就解决了。

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