在我的mvc4应用程序中,我想使用html.beginform()将多个参数传递给同一控制器上的actionResult。
我这样做:
视图:
<div>
@using (Html.BeginForm("AddNote", "Lead",FormMethod.Post, null))
{
@Html.Hidden("leadID",@Model.ID)
<input type="text" name="noteBody" />
<input type="submit" class="mainButton" value="Add New!"/>
}
</div>
Controller(LeadController):
[HttpPost]
ActionResult AddNote(int leadID, string noteBody)
{
Note note = new Note();
note.DateModified = DateTime.Now;
note.Title = "No Title";
note.Body = noteBody;
Lead lead = unitOfWork.LeadRepository.GetById(leadID);
lead.Notes.Add(note);
unitOfWork.Save();
return RedirectToAction("Details", new { id = leadID });
}
当我按下提交按钮时,我得到一个例外:
无法找到资源。
描述:HTTP 404.您正在查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。
请求的网址:/ Lead / AddNote
这是说我已经尝试了输出参数的地方,它运作得很好。 我还尝试在表单声明中传递“leadID”参数(new {leadID = @ Model.ID})。
知道我做错了什么?
答案 0 :(得分:1)
AddNote
方法应为public
。使用public
关键字即可。
答案 1 :(得分:1)
只需将“公共”修饰符添加到您的操作中,它就会发挥作用。
答案 2 :(得分:0)
添加HTTPPOST
属性,例如
[HttpPost]
ActionResult AddNote(int leadID, string noteBody)
{
Note note = new Note();
note.DateModified = DateTime.Now;
note.Title = "No Title";
note.Body = noteBody;
Lead lead = unitOfWork.LeadRepository.GetById(leadID);
lead.Notes.Add(note);
unitOfWork.Save();
return RedirectToAction("Details", new { id = leadID });
}
也许它会帮助你