以下代码未按预期正常工作。
控制器有一个动作方法
[HttpPost]
public ActionResult LoginResult()
{
string name = Request.Form["name"];
return View("Dashboard");
}
public ActionResult Dashboard()
{
string strName = Request["username"].ToString();
return View();
}
并且在视图中我有一个表格
@using (Html.BeginForm("LoginResult", "Dashboard", FormMethod.Post))
{
@Html.EditorFor(model =>model.username)
<button type="button" id="ajax_method">submit Via AJAX</button>
}
并使用函数提交此内容
<script>
$(function () {
$('#ajax_method').click(function (e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "Dashboard/LoginResult", //Your Action name in the DropDownListConstroller.cs
data: "{'AJAXParameter1':'" + $('#username').val() + "'}", //Parameter in this function, Is case sensitive and also type must be string
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(function (data) {
//Successfully pass to server and get response
if (data.result = "OK") {
alert("submit successfully.");
}
}).fail(function (response) {
if (response.status != 0) {
alert(response.status + " " + response.statusText);
}
});
});
});
</script>
但点击按钮时出现404错误。
即使我尝试在路由配置中添加路由规范。
routes.MapRoute(
name: "login",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Dashboard", action = "LoginResult", id = UrlParameter.Optional }
);
再次修改了cshtml。但这也行不通。
@using (Html.BeginForm("login", "Dashboard", FormMethod.Post))
{
@Html.EditorFor(model =>model.username)
<button type="button" id="ajax_method">submit Via AJAX</button>
}
这可能是一个愚蠢的错误,但它破坏了我的一天。任何人都可以伸出援手来解决这个问题。
答案 0 :(得分:0)
在我的情况下,删除默认路由会导致我的问题。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional }
);
添加这个解决了我的问题。因为我是webforms和mvc的混合项目。我没有注意到它。
答案 1 :(得分:-1)
@using (Html.BeginForm("Action Name", "Controller Name", FormMethod.Post))
我认为你必须改变&#34;仪表板&#34;到您的控制器名称