Asp.net mvc 4 通过Html.UpshotContext调用带参数的Web api方法

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

我目前正在开发MVC4单页应用程序

我有一个Web Api方法GetChartsByCategory(int catId) 所以在我的视图cshtml页面中,我应该如何在这个场景中声明Html.UpshotContext

我不想调用GetAllCharts(),然后在客户端使用淘汰或升级进行筛选


谢谢

无法使用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将参数传递到服务器的人。如果有人有更好的方法,请告诉我们