ASP.NET MVC操作未获取参数值
ASP.NET MVC Action Not Getting Parameter Values
我正在开发一个ASP.NET MVC 4应用程序。这个应用程序有一个控制器,其操作如下:
public class MyController : System.Web.Http.ApiController
{
[ResponseType(typeof(IEnumerable<MyItem>))]
public IHttpActionResult Get(string id, string filter)
{
IEnumerable<MyItem> results = MyItem.GetAll();
List<MyItem> temp = results.ToList<MyItem>();
var filtered = temp.Where(r => r.Name.Contains(filter);
return Ok(filtered);
}
}
我使用以下JavaScript调用此操作,它依赖于Select2库:
$('#mySelect').select2({
placeholder: 'Search here',
minimumInputLength: 2,
ajax: {
url: '/api/my',
dataType: 'json',
quietMillis: 150,
data: function (term, page) {
return {
id: '123',
filter: term
};
},
results: function (data, page) {
return { results: data };
}
}
});
此代码成功到达控制器操作。然而,当我在观察窗口中查看id
和filter
时,我会看到以下错误:
The name 'id' does not exist in the current context
The name 'filter' does not exist in the current context
我做错了什么?如何从JavaScript中调用MVC操作?
谢谢!
您不是在传递实际数据作为参数,而是在传递一个函数:
data: function (term, page) {
return {
id: '123',
filter: term
};
}
除非调用该函数,否则永远不会计算结果。一般来说,一个人只会自己传递数据:
data: {
id: '123',
filter: term
}
但是,如果在代码中有使用函数的特殊原因(示例中未显示),则需要评估该函数,以便将结果值设置为data
:
data: (function (term, page) {
return {
id: '123',
filter: term
};
})()
然而,这些错误也意味着第二个问题,可能与您尝试调试的方式有关:
名称"id"在当前上下文中不存在
名称"filter"在当前上下文中不存在
即使没有传递任何值,id
和filter
仍然存在于操作方法的范围内。它们可能是null
或空字符串,但变量是存在的。目前还不清楚您在哪里看到了这个错误,但它肯定不在操作方法的范围内。
相关文章:
- ROR:如何在不重新加载浏览器的情况下从控制器获取参数
- 如何在reactrouterv2.+中从URL获取参数
- 如何获取参数的值
- 从从字符串创建的函数中获取参数列表
- jquery从url中获取参数也会在控制台日志中留下url
- 从Javascript中的URL获取参数
- IFrame 从不同域上的父 url 获取参数
- 如何使用React Router在Route Handler上获取参数
- Angularjs-如何从URL获取参数
- 从外部函数获取参数名称
- PHP从带有url的变量中获取参数
- 是否可以在 JavaScript 中按函数名称获取参数
- JS .replace(str, str):如何获取参数 1 中的变量并全局工作
- 从页面网址获取参数
- 如何在 router.use 中定义参数时获取参数
- 如何从 JavaScript 中的 JSON 对象获取参数的名称
- 我将一个函数(本身有一个参数)作为参数传递给另一个函数以及如何获取参数
- 如何获取参数对象的子集?(关于具有可变大小的参数)
- Javascript对象通信并从其他对象获取参数
- Websocket 从查询中获取参数