2

在我的 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>

控制器(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。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的 URL:/Lead/AddNote

这就是说我已经用输入参数尝试过它的地方,它工作得很好。我还尝试在表单声明中传递“leadID”参数(新的 {leadID = @Model.ID})。

知道我在做什么错吗?

4

3 回答 3

1

方法AddNote应该是。public使用public关键字,它将起作用。

于 2013-12-21T17:05:52.893 回答
1

只需将“public”修饰符添加到您的操作中,它就会发挥作用。

于 2013-12-22T08:56:34.387 回答
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 });
}

也许它可以帮助你

于 2013-12-21T12:51:20.950 回答