【发布时间】:2016-06-26 22:03:53
【问题描述】:
我创建了控制器用于在网页上添加评论。下面是我的评论控制器
public ActionResult AddComment(int id=0)
{
int spid = id;
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddComment(comment cmt,int spid)
{
if (ModelState.IsValid)
{
cmt.SPID = spid;
db.comments.Add(cmt);
db.SaveChanges();
return RedirectToAction("Index", "Comment");
}
return View(cmt);
}
这是添加评论视图
@model WEB1.Models.comment
@using (Html.BeginForm("AddComment", "Comment"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>comment</legend>
<div class="editor-label">
@Html.LabelFor(model => model.cmd_content)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.cmd_content)
@Html.ValidationMessageFor(model => model.cmd_content)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.t_email)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.t_email)
@Html.ValidationMessageFor(model => model.t_email)
</div>
@Html.HiddenFor(model => model.SPID)
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
下面是评论模型
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CMT_ID { get; set; }
private DateTime _date = DateTime.Now;
public DateTime cmd_ad
{
get { return _date; }
set { _date = value; }
}
[Required(ErrorMessage = "Please add Comment before submit")]
public string cmd_content { get; set; }
[RegularExpression(@"^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$",
ErrorMessage = "Please Enter Correct Email Address")]
public string t_email { get; set; }
public Nullable<int> SPID { get; set; }
我收到错误消息
'参数字典包含参数'spid'的空条目,该参数'spid'的不可空类型'System.Int32'用于'WEB1中的方法'System.Web.Mvc.ActionResult AddComment(WEB1.Models.comment,Int32)' .Controllers.CommentController'。可选参数必须是引用类型、可空类型或声明为可选参数。 参数名称:parameters'。
我已经调试了我的代码,它没有在 post Action 方法上命中。我该如何解决这个问题。
【问题讨论】:
-
我修改了我的问题
-
@StephenMuecke 非常感谢。它有效
标签: c# asp.net-mvc asp.net-mvc-4