我在将我的应用程序带入 WebApi + Knockout 世界所需的模式方面遇到了一些问题。下面的场景已经抛出了一点。
我有一个非常基本的网格局部视图(_grid.cshtml)。它使用一个 GridViewModel,它只有一个 QueryID。Grid 部分使用 Ajax(在 ko ViewModel 中定义)将 QueryID 传递给 WebApi 方法,该方法返回 JSON 中的对象集合。然后我使用敲除根据返回的 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,但不知道(足够了解它们或)这是否是正确的方向。