无法使用mvc4 html.beginform(...)传递多个参数

时间:2013-12-21 12:42:08

标签: asp.net-mvc-4 html.beginform

在我的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})。

知道我做错了什么?

3 个答案:

答案 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 });
}

也许它会帮助你