[英]input submit throws 404 for control not found in MVC
我已经将MVC应用程序发布到服务器路径“ / iapps / ebiz”。 该应用程序可在localhost上完美运行。 @ Ajax.Action链接按“获取”操作的预期运行,但''找不到控制器的Post方法,并抛出错误代码404。
@Ajax.ActionLink(
"Add Email",
"GetEditEmail","Customer",
new { CommunicationLocation = "add" },
new AjaxOptions()
{
HttpMethod = "Get",
UpdateTargetId = "DivEmailContainer",
InsertionMode = InsertionMode.Replace
},
new { @class = "btn btn-success" }) </td>
@using (Html.BeginForm("PostEditEmail","Customer", FormMethod.Post, new { name = "frmEmail", id = "frmEmail" }))
{
<input type="submit" value="Save" class="btn btn-success" />
<!-- This one is going "/iapps/Customer" but suppose to be "/iapps/eBiz/Customer"
}
[HttpGet]
public PartialViewResult GetEditEmail(string CommunicationLocation)
{
}
[HttpPost]
[Route("PostEditEmail")]
public PartialViewResult PostEditEmail(string Actiontype, FormCollection col)
{
}
路线图
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Customer", action = "Index", id = UrlParameter.Optional }
);
<form action="/iapps/ebiz/Customer/PostEditEmail?Length=8" data-ajax="true" data-ajax-method="Post" data-ajax-mode="replace" data-ajax-update="#DivEmailContainer" id="frmEmail" method="post" name="frmEmail" novalidate="novalidate" _lpchecked="1">
如果在浏览器中的eBiz之后添加/eBiz/
(反斜杠),则添加时问题已解决。 如果/eBiz
和post不起作用。 如何解决这个问题?
基本URL问题的末尾加斜杠。
您已将Route属性指定为[Route(“ PostEditEmail”)],因此它将指向URL
/ iapps / ebiz / PostEditEmail
这样只有您收到404错误。 尝试这个
[Route("Customer/PostEditEmail")]
您在Html.BeginForm
中缺少area
参数。请Html.BeginForm
以下操作。
@using (Html.BeginForm("PostEditEmail","Customer", new { area = "eBiz" }, FormMethod.Post, new { name = "frmEmail", id = "frmEmail" }))
{
<input type="submit" value="Save" class="btn btn-success" />
}
即使您的控制器不在Area文件夹下,您也应该在Html.BeginForm
方法中添加new { area = "" }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.