我正在尝试将值传递给Url.Action,如此
$('._select_change').change(function(n)
{
var param = n.target.value;
$.get('@Url.Action("List", new { someid = param } )', function (data) {
$('#changeArea').replaceWith(data);
});
});
如果我设置someid ='123',则值继续正常。但是当我用someid = param替换时 - 我得到编译器错误“CS0103:当前上下文中不存在名称'param'”...
我应该如何构建此方法调用?
感谢
答案 0 :(得分:1)
我应该如何构建此方法调用?
像这样:
$('._select_change').change(function() {
var param = $(this).val();
$.get('@Url.Action("List")', { someid: param }, function (data) {
$('#changeArea').replaceWith(data);
});
});
注意我是如何使用$.get()
方法的第二个参数将查询字符串参数传递给来自客户端的AJAX调用。
这会将下拉列表的选定值传递给采用someid
操作参数的List控制器操作:
public ActionResult List(string someid)
{
...
}
因此,您将在javascript调试工具的Net选项卡中看到的是以下AJAX请求被发送到服务器:
GET /somecontroller/List?someid=123
如果您使用此$.get()
方法,那么您应该小心谨慎。 GET请求通常由浏览器缓存。这意味着如果您向/list?someid=123
之类的同一网址发送许多请求,则浏览器可以缓存结果,只有第一个请求才能到达服务器。但是,如果您希望每次都提供新鲜数据,并且想要针对每个请求访问服务器,该怎么办?在这种情况下,推荐的解决方案是使用$.ajax()
方法,而不是允许您禁用缓存:
$('._select_change').change(function() {
var param = $(this).val();
$.ajax({
url: '@Url.Action("List")',
data: { someid: param },
cache: false,
success: function (data) {
$('#changeArea').replaceWith(data);
}
});
});
这将在每个请求上附加一个随机查询字符串参数,以确保客户端浏览器不会缓存结果。
答案 1 :(得分:1)
$.ajax({
url: YourURL,
type: "post",
data: $('form').serialize(), // one way of submitting full form
data: { id: "your ID", name: "your name" }, // if you have less parameters use this
success: function (data) {
// handle it
},
error: function (data) {
// handle your error
},
dataType: "JSON"
//async:true
});