我正在構建一個MVC 5 Web應用程序,它具有包含在佈局模板中的下拉列表。我按照上計算器這個答案,它工作得很好MVC 3 Layout Page, Razor Template, and DropdownListJQuery Ajax Post不能按預期工作
我需要的是爲用戶從下拉列表中選擇一個項目(人名),以做出一個jQuery調用,然後將選擇的將列表ID下拉到Controller中的一個方法中。
我有一個下拉列表中聲明這樣
@Html.DropDownListFor(x => x.SelectedUserID, Model.UserList, "Select", new { @class = "form-control" })
當選擇項目時,下面的JQuery代碼被稱爲
$(document).ready(function() {
$("#SelectedUserID").change(ChangeEventOfDDL);
function ChangeEventOfDDL() {
alert("test val" + $(this).val());
$.ajax({
type: "POST",
url: '/Dashboard/Index/' + $(this).val(),
data: { id: $(this).val() },
dataType: "json",
error: function() {
alert("An error occurred.");
},
success: function (data) {
}
});
}
});
這然後將選定的ID傳遞給索引方法在我的控制器
public ActionResult Index(int? id)
{
DashboardViewModel model = new DashboardViewModel();
if(id == null || id == 0)
{
User user = _userService.GetUserByID(Convert.ToInt32(User.Identity.GetUserId()));
model.SelectedUser = user;
}
else
{
model.SelectedUser = _userService.GetUserByID(id.Value);
}
return View(model);
}
這一切似乎工作正常。當我通過我的代碼進行調試時,我可以看到選定的下拉列表ID正在按照預期一直傳遞到我的控制器中的Index方法。問題是,當我完成遍歷代碼並返回到用戶界面時,出現JQuery錯誤,提示「發生錯誤」。這是我在我的JQuery函數中設置的默認錯誤消息。
因爲發生此錯誤,我的代碼無法正常工作。
我不知道爲什麼會發生這種情況,任何人都可以請幫忙嗎?
謝謝。
UPDATE
使用我用下面的代碼ChangeEventOfDLL功能內的Ajax調用之前,但是,它從來沒有真正打在儀表板的指數方法。
$.post('@Url.Action("Dashboard", "Index")', { id: $(this).val() }, function (result) {
});
UPDATE
我改變我的JQuery這
$(document).ready(function() {
$("#SelectedUserID").change(ChangeEventOfDDL);
function ChangeEventOfDDL() {
alert("test val" + $(this).val());
$.post('@Url.Action("Index", "Dashboard")', { id: $(this).val() }, function (result) {
});
}
});
但仍Index方法不會被調用的控制器。
接下來我jQuery代碼更新到這個
$(document).ready(function() {
$("#SelectedUserID").change(ChangeEventOfDDL);
function ChangeEventOfDDL() {
alert("test val" + $(this).val());
$.ajax({
type: "POST",
url: '@Url.Action("Index","Dashboard")',
data: { id: $(this).val() },
error: function() {
alert("An error occurred.");
},
success: function (data) {
}
});
}
});
但仍Index方法未在控制器打來電話,我仍然得到錯誤提示。
爲什麼你有'dataType:json'?我沒有看到你的Action返回的任何json?爲什麼你的操作返回一個視圖? –
@RaphaëlAlthaus道歉,請參閱我的更新。我從以前的應用程序複製Ajax代碼,它實際上在我的控制器中打索引方法,而我以前的代碼(見更新)沒有。你能幫我嗎?謝謝。 – tgriffiths
問題不在於「去控制器操作」,問題是你爲什麼認爲你的方法正在返回json,爲什麼你返回一個View? –