我有一个页面,基本上显示由数据库支持的文章。
在那篇文章的下方,有一个评论部分。这是由返回 _Comments 部分的 @Html.Action 调用提供的。
在那个 _Comments 部分中。有一个可选的 _AddComment @Html.Action 调用在其中呈现一个 _AddComment 部分。
_AddComment 部分由 GET 和 POST 的 _AddComment 控制器方法支持。
[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult _AddComment(EditComment comment)
GET 方法只返回一个带有 AssetID 的“EditComment”VM。
每当在 _AddComment 视图中填写并发布评论时。它的控制器方法被正确调用,但模型没有被传回。
如果我查看请求参数,我可以看到模型的所有属性都被正确传回。但是,它没有绑定到 Controllers 方法参数中。
我尝试将“模型”指定为 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>