我遇到了将我的应用程序带入WebApi + Knockout世界所需的模式问题。以下情况已经引发了一些。
我有一个非常基本的网格局部视图(_grid.cshtml)。它使用GridViewModel,它只有一个QueryID。 Grid部分使用Ajax(在ko ViewModel中定义)将QueryID传递给WebApi方法,该方法返回JSON中的对象集合。然后我使用knockout根据返回的JSON绑定网格的列,然后加载行。
这一切都很好,但我不确定这是否是正确的方法。
// When the query is changed update the grid data.
self.selectedQueryID.subscribe(function (newQuery) {
self.SelectQuery(newQuery.ID());
});
// Execute the query and set the results as the rows of the table
self.SelectQuery = function (queryID) {
$.ajax({
url: '/api/Query/Execute?ID=' + queryID,
type: 'POST',
contenttype: 'application/json',
success: function (result) {
self.gridData(result);
}
});
};
当我有另一个部分视图时,复杂性就出现了,该视图是用户可以选择的可用查询列表。该局部视图位于网格局部视图附近。我希望能够以某种方式将点击的查询发送到网格,以便它可以再拍摄另一个ajax请求以获取新查询的数据。我知道这是考虑MVC应用程序的错误方法,但我对WebApi不够了解。
@Html.Partial("~/Views/Shared/_Grid.cshtml", Model.GridViewModel)
@Html.Partial("~/Views/Shared/_Queries.cshtml", Model.User)
这是为网格实现某种默认查询,然后为用户提供选择其他查询的选项。
我也开始研究Backbone和Knockback,但是如果这是正确的方向,我们不知道(足够他们或者)。