Asp.net mvc 4 通过Html.UpshotContext调用带参数的Web api方法
我目前正在开发MVC4单页应用程序 我有一个Web Api方法GetChartsByCategory(int catId) 所以在我的视图cshtml页面中,我应该如何在这个场景中声明Html.UpshotContext 我不想调用GetAllCharts(),然后在客户端使用淘汰或升级进行筛选Asp.net mvc 4 通过Html.UpshotContext调用带参数的Web api方法,asp.net-mvc-4,asp.net-web-api,upshot,Asp.net Mvc 4,Asp.net Web Api,Upshot,我目前正在开发MVC4单页应用程序 我有一个Web Api方法GetChartsByCategory(int catId) 所以在我的视图cshtml页面中,我应该如何在这个场景中声明Html.UpshotContext 我不想调用GetAllCharts(),然后在客户端使用淘汰或升级进行筛选 谢谢无法使用Html.UpshotContext提供参数。您可以使用$.ajax()调用GetChartsByCategory()并将结果映射到您的模型 例如: $.ajax("GetChartsByC
谢谢无法使用Html.UpshotContext提供参数。您可以使用$.ajax()调用GetChartsByCategory()并将结果映射到您的模型 例如:
$.ajax("GetChartsByCategory", true, {
data: { id: catID },
dataType: 'json',
success: function (data) {
// on success, data contains a list of charts
self.charts(ko.utils.arrayMap(data, function (item) {
return new Chart(item);
}));
}
});
型号:
Chart = function (initialData) {
var self = this;
// inject the initial data
$.each(initialData, function (key, value) {
self[key] = ko.observable(value);
});
....
}
无法使用Html.UpshotContext提供参数。您可以使用$.ajax()调用GetChartsByCategory()并将结果映射到您的模型 例如:
$.ajax("GetChartsByCategory", true, {
data: { id: catID },
dataType: 'json',
success: function (data) {
// on success, data contains a list of charts
self.charts(ko.utils.arrayMap(data, function (item) {
return new Chart(item);
}));
}
});
型号:
Chart = function (initialData) {
var self = this;
// inject the initial data
$.each(initialData, function (key, value) {
self[key] = ko.observable(value);
});
....
}
另一种允许您坚持使用knockout/upshot框架的方法是更改upshot提供参数操作名称,以将参数作为路由和/或查询字符串的一部分 以下示例使用从HTML中收集的“ApplicationId”作为参数,对接受“id”参数作为路由(“/api/controller/action/id”)一部分的方法进行WebAPI调用: 控制器方法:
public class ClientDetailsScreenController : DataController
{
public ClientModel GetClient(int id)
{
var client = //Fetch client with id using your prefered method
return client;
}
}
查看HTML Upshot上下文:
@(Html.UpshotContext(true).DataSource<ClientDetailsScreenController>(ctr => ctr.GetClient(0))))
希望这能帮助其他试图通过upshot将参数传递到服务器的人。如果有人有更好的方法,请告诉我们。另一种允许您坚持使用淘汰/结果框架的方法是更改结果提供参数操作名称,以将参数作为路由和/或查询字符串的一部分 以下示例使用从HTML中收集的“ApplicationId”作为参数,对接受“id”参数作为路由(“/api/controller/action/id”)一部分的方法进行WebAPI调用: 控制器方法:
public class ClientDetailsScreenController : DataController
{
public ClientModel GetClient(int id)
{
var client = //Fetch client with id using your prefered method
return client;
}
}
查看HTML Upshot上下文:
@(Html.UpshotContext(true).DataSource<ClientDetailsScreenController>(ctr => ctr.GetClient(0))))
希望这能帮助其他试图通过upshot将参数传递到服务器的人。如果有人有更好的方法,请告诉我们