我正在开发一个ASP.Net MVC 3 Web应用程序。我的一个Razor Views包含一些Textbox和一个下拉列表。当用户从下拉列表中选择一个选项时,执行以下JQuery代码
查看
<select id="myDDL">
<option></option>
<option value="1">F1</option>
<option value="2">F2</option>
<option value="3">ST1</option>
<option value="4">ST2</option>
</select>
<div id="someDivToLoadContentTo">
</div>
JQuery
$(document).ready(function () {
$("#myDDL").change(ChangeEventOfDDL);
function ChangeEventOfDDL(){
var dropDownValue = $('#myDDL').val();
//alert(dropDownValue);
$.ajax({ type: "GET",
url: '@Url.Action("SomePartialView","testAjax")',
data: {
id: dropDownValue
},
success: function(data) {
$('#someDivToLoadContentTo').html(data);
}
});
}
});
控制器
public class testAjaxController : Controller
{
public ActionResult SomePartialView(int id)
{
var test = "Hello World";
return View(test);
}
}
但是,当我在 testAjax 控制器中的 SomePartialView 方法上设置断点时,它永远不会被击中。
任何人都可以建议为什么会这样吗?
非常感谢任何帮助。
感谢。
更新
我将errorData行添加到我的Ajax调用中,但是这似乎没有给我任何东西
$(document).ready(function(){
$("#myDDL").change(ChangeEventOfDDL);
function ChangeEventOfDDL(){
var dropDownValue = $('#myDDL').val();
//alert(dropDownValue);
$.ajax({ type: "GET",
url: '@Url.Action("SomePartialView","testAjax")',
data: {
id: dropDownValue
},
success: function(data) {
$('#someDivToLoadContentTo').html(data);
},
error: function (errorData) { $('#someDivToLoadContentTo').html(errorData); }
});
}
});
答案 0 :(得分:2)
如果您要向Controller发送值,则需要使用POST
,而不是GET
。
type: "POST"
答案 1 :(得分:2)
问题在于以下一行
url: '@Url.Action("SomePartialView","testAjax")'
这创建了一个不正确的URL,因此,该动作永远不会被调用。我改为以下行,然后纠正了问题
url: '/testAjax/SomePartialView/' + dropDownValue
答案 2 :(得分:1)
我想我可能已经发现了它:
尝试更改此内容:
data: {
id: dropDownValue
},
到此:
data: {
'id': dropDownValue
},
目前我认为可能会混淆id与任何事情无关。