Asp.net mvc 4 can';t使用mvc4 html.beginform(…)传递多个参数

Asp.net mvc 4 can';t使用mvc4 html.beginform(…)传递多个参数,asp.net-mvc-4,html.beginform,Asp.net Mvc 4,Html.beginform,在我的mvc4应用程序中,我想使用html.beginform()将多个参数传递给同一控制器上的actionResult 我是这样做的: 视图: 当我按下提交按钮时,我得到一个异常: 找不到资源 描述:HTTP404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下URL并确保其拼写正确 请求的URL:/Lead/AddNote 这里可以说我用PUT参数进行了尝试,效果很好。 我还尝试在表单声明中传递“leadID”参数(new{leadID=@Model.ID

在我的mvc4应用程序中,我想使用html.beginform()将多个参数传递给同一控制器上的actionResult

我是这样做的:

视图:

当我按下提交按钮时,我得到一个异常:

找不到资源

描述:HTTP404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下URL并确保其拼写正确

请求的URL:/Lead/AddNote

这里可以说我用PUT参数进行了尝试,效果很好。 我还尝试在表单声明中传递“leadID”参数(new{leadID=@Model.ID})


知道我做错了什么吗?

添加
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 });
}

也许它对您有所帮助

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

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

您的
AddNote
操作中是否有
[HttpPost]
属性?您正在使用一些自定义路由吗?我的操作中有[HttpPost]。看来这不是根本原因。你所说的定制路线是什么意思?请详细说明你在这里的意思;为什么要公开它?控制器是一个类,就像其他类一样。。。您无法访问私有方法、属性、字段等,。。。从外面。只要把它公之于众,它就会起作用(如果你没有像前面提到的那样弄乱路由的话)。顺便说一句,如果您将鼠标指针悬停在视图中的AddNote字符串上(其中@using(Html.BeginForm(“AddNote”),它是否会说:“无法解析操作‘AddNote’?
[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 });
}
[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 });
}