【发布时间】:2011-11-06 12:02:41
【问题描述】:
我是 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,但是在提交表单时会丢失。
我在这里遗漏了一些明显的东西吗?我过去设置了类似的表格,效果很好,我不明白为什么现在不行。提前致谢。
稍后编辑:
我输入了错误的代码并将导致问题的 public ActionResult CommentForm(CommentModel model) 从 public ActionResult CommentForm(CommentModel comment) 更改。
感谢您的帮助。
【问题讨论】:
标签: asp.net-mvc