ASP.NET MVC 4 / MVVM / Web API的良好结构?

尼古拉斯

我有一个.NET MVC 4项目,并且刚刚启动Kendo UI MVVM框架。MVC使用ViewModels将数据从控制器发送到视图。我通过MVVM框架管理所有客户端对象,并使用JSON序列化它们并将它们发送回我的控制器。

当前,我使用MVC ViewModel返回页面上将是静态的数据,并使用jquery调用来获取页面上所需的任何动态数据。我发现使用2种方法检索数据令人困惑。(如果我感到困惑,请想象下一个必须在我的代码中工作的开发人员)

当我可以轻松地拥有一种结构,在该结构中我可以根据需要在JavaScript代码中查询控制器(通过Web API)并将其直接保存到我的MVVM视图模型中时,我发现通过ViewModels将数据发送到View有点用处。

我看到在UI中使用MVVM框架有很多优点,它使控件绑定变得更加容易。

我的问题:

从控制器获取数据到MVVM ViewModel的最佳方法是什么?

我觉得使用MVC ViewModel会重复工作,因为我可以通过Ajax请求查询Web API,而不是将MVC ViewModel转换为MVVM JS ViewModel。

永远不要将MVC viewModel返回到我的UI并始终使用客户端Web API调用来检索所有数据,这是一个好方法吗?

谢谢,

尼古拉斯

峰值编码

永远不要将MVC viewModel返回到我的UI并始终使用客户端Web API调用来检索所有数据,这是一个好方法吗?

我会说这取决于您的用例。

您肯定可以返回在MVC模型中显示页面后需要呈现的数据。请记住,MVC模型已呈现到服务器上生成的HTML页面中。这意味着可以将值直接注入HTML中,然后再返回给客户端。

另外请记住,如果必须多次击中服务器,则可能需要更长的时间才能完全呈现页面。一次获取HTML,然后为每个Kendo小部件获取一次异步数据。

就是说,我通常会按照您所说的去做...只渲染没有模型的MVC视图,然后让Kendo UI小部件在页面加载后获取其数据。

但实际上,这取决于您的数据。如果您的MVC模型包含:

public string Title { get; set; }

在剃刀中,您有:

<h1>@Title</h1>

然后,我并不是真的想重新获取异步数据。在这种情况下,我通常会做一些骇人听闻的事情,然后将值放入页面中:

<script type="text/javascript">
    window.viewData = window.viewData || {};
    window.viewData.Title = "@Title"
</script>

<h1 data-bind="text: Title"></h1>

<script src="viewmodel.js"></script>

然后在viewmodel.js文件中(我从返回的HTML中创建了一个单独的文件,以便浏览器可以对其进行缓存)

(function (viewData) {
    var viewModel = kendo.observable({
        Title: viewData.Title
    });

    kendo.bind($("body"), viewModel);
})(window.viewData);

不过,这只是我自己的方法。不一定适合所有情况。这完全取决于您要从何处以及从何处获取什么数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP MVC 4 + Web API

来自分类Dev

ASP.net MVC Web API + Android

来自分类Dev

ASP.net MVC Web API + Android

来自分类Dev

ASP.NET MVC和WEB API

来自分类Dev

Angularjs + ASP.NET MVC + ASP.NET Web API

来自分类Dev

如何创建ASP .NET MVC4 Web API来搜索我的多个参数

来自分类Dev

自定义标题和信号:Asp.Net MVC4 Web Api

来自分类Dev

自定义标题和信号:Asp.Net MVC4 Web Api

来自分类Dev

从ASP.net MVC 4 WEB API控制器返回byte []

来自分类Dev

如何在ASP.NET MVC4中为Web API网址创建通用方法

来自分类Dev

如何创建ASP .NET MVC4 Web API来搜索我的多个参数

来自分类Dev

从ASP.net MVC 4 WEB API控制器返回byte []

来自分类Dev

如何在asp.net MVC4中为Web API网址创建通用方法

来自分类Dev

如何从Web API调用ASP.NET Core Web MVC

来自分类Dev

如何从Web API调用ASP.NET Core Web MVC

来自分类Dev

如何在ASP.NET MVC4 Web API中捕获未定义的api方法调用

来自分类Dev

如何将ASP.Net MVC4 Web API与AngularJS部分视图结合使用(aka ng-include)

来自分类Dev

如何在ASP.Net MVC4和Web API 1项目中进行属性路由?

来自分类Dev

在ASP.NET MVC Web Api中返回Json

来自分类Dev

ASP.NET MVC Web API请求限制

来自分类Dev

ASP.NET vNext MVC 6 Web Api的帮助页面

来自分类Dev

使用Web API的ASP.NEt MVC返回Razor视图

来自分类Dev

ASP.NET MVC Web Api帮助页面路由

来自分类Dev

缓存ASP.NET MVC Web API结果

来自分类Dev

ASP.NET MVC Web API:发布对象列表

来自分类Dev

ASP.NET MVC Web应用到REST API

来自分类Dev

Asp.Net Mvc Web Api路由404

来自分类Dev

在Android中访问Asp.net MVC Web Api

来自分类Dev

ASP.NET MVC Web API请求限制