[英]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.