我是 ASP.NET MVC 的新手,我正在尝试创建一个非常简单的博客类型网站作为学习一切工作原理的方法。但是,当我从评论表单发布到空模型时遇到问题,我不知道为什么。
在博客文章页面上,我有一个“添加评论”链接,它调用一些 JQuery 来呈现强类型化到 CommentModel 的部分视图。该链接还传递博客文章的 ID,部分代码如下:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Blog.Models.CommentModel>" %>
<% using (Html.BeginForm())
{ %>
<%: Html.HiddenFor(x => x.Post.ID) %>
<%: Html.HiddenFor(x => x.CommentID) %>
<%: Html.TextBoxFor(x => x.Name) %><br />
<%: Html.TextBoxFor(x => x.Email) %><br />
<%: Html.TextBoxFor(x => x.Website) %><br />
<%: Html.TextAreaFor(x => x.Comment) %><br />
<input type="submit" value="submit" />
<% } %>
CommentsModel 很简单,看起来像这样(我还没有应用任何验证或任何东西):
public class CommentModel
{
public BlogPost Post { get; set; }
public int CommentID { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Website { get; set; }
public string Comment { get; set; }
}
然后,这应该发布到一个简单的控制器操作,该操作会将评论添加到数据库并将用户返回到页面。为了简单起见,我删除了大部分代码,但它看起来类似于:
[HttpPost]
public ActionResult CommentForm(CommentModel model)
{
if (ModelState.IsValid)
{
}
else
{
}
}
一切都按预期进行,除了发布评论表单时,评论模型为空。我不明白为什么这是空的。当我查看渲染的部分视图的源时,我可以看到“Post.ID”填充了正确的 ID,但在提交表单时该 ID 会丢失。
我在这里遗漏了一些明显的东西吗?我过去设置过与此类似的表格,效果很好,我不明白为什么现在不行。提前致谢。
稍后编辑:
我输入的代码不正确并更改了public ActionResult CommentForm(CommentModel model)
from public ActionResult CommentForm(CommentModel comment)
这是造成问题的原因。
谢谢您的帮助。