gpt4 book ai didi

javascript - ASP.NET MVC 操作未获取参数值

转载 作者:行者123 更新时间:2023-12-03 11:45:45 25 4
gpt4 key购买 nike

我正在开发 ASP.NET MVC 4 应用程序。此应用程序有一个 Controller ,其操作如下所示:

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 调用此操作,该 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 };
}
}
});

此代码成功到达 Controller 操作。但是,当我在监 window 口中查看 idfilter 时,我看到以下错误:

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
};
})()
<小时/>

但是,这些错误也意味着第二个问题,可能与您尝试调试的方式有关:

The name 'id' does not exist in the current context

The name 'filter' does not exist in the current context

即使没有传递任何值,idfilter 仍然存在在操作方法的范围内。它们可能是 null 或空字符串,但变量存在。目前尚不清楚您在哪里看到该错误,但它绝对不在操作方法的范围内。

关于javascript - ASP.NET MVC 操作未获取参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26059477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com