【发布时间】:2025-12-15 02:15:02
【问题描述】:
我被困住了,谁能帮帮我?在我的 LogOn.aspx 视图中,我在 FORM 标记内有登录控件(用户名、密码、RememberMe):
<form id="loginform" method="post" action="/Account/LogOn/">
在下面,我有一个隐藏的 DIV,带有一个 OPTION 下拉列表和一个确认按钮,以及一个 onclick_event:
$.ajaxSetup({ cache: false });
$.ajax({
type: "GET",
url: "/Account/SetCompanyAndContinue",
data: "{ 'id' : '1'}",
contentType: "application/json; charset=utf-8",
dataType: "json"
});
首先,用户登录。在 jQuery 中,我通过 AJAX 发布登录凭据:
var loginCred = new Object();
loginCred.Username = $('#userName').val();
loginCred.Password = $('#password').val();
loginCred.RememberMe = $('#rememberMe').checked;
var myJsonObject = JSON.stringify(loginCred);
$.ajaxSetup({ cache: false });
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/Account/LogOnAjax/",
data: myJsonObject,
dataType: "json",
success: function(data) {
PostCredentialsSuccess(data);
}
});
这篇文章很完美。控制器操作处的断点被调试器命中并返回一个 JSON 数据对象。我将此 JSON 数据放入 OPTION 下拉列表中。然后将该选项下拉列表呈现给用户。然后,当用户单击确认按钮时,会进行第二次 AJAX 调用:
$.ajaxSetup({ cache: false });
$.ajax({
type: "GET",
url: "/Account/SetCompanyAndContinue",
data: "{ 'id' : '1'}",
contentType: "application/json; charset=utf-8",
dataType: "json"
});
我希望名为“SetCompanyAndContinue”的控制器操作会被命中:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult SetCompanyAndContinue(string id)
{
SessionAdapter.CustomerID = Convert.ToInt32(id);
return null;
}
但这并没有发生,相反,默认的控制器动作第一次被击中:
public ActionResult LogOn()
{
return View();
}
但是(!)当我第二次单击(相同的)确认按钮时,控制器操作最终会触发 [SetCompanyAndContinue]。
谁能告诉我我做错了什么?非常感谢。
【问题讨论】:
-
你是如何绑定到确认按钮的?
标签: asp.net-mvc jquery