asp.net mvc中JavaScriptResult的工作示例

有人可以在asp.net mvc中提供JavaScriptResult的工作示例。 据我所知,它返回javascript,然后在客户端执行,并且响应的内容类型设置为text / javascript。 我需要一些有用的例子才能看到这件事。

尽可能避免

JavaScriptResult被认为是Asp.net MVC引入的反模式(完全分离关注点),因为它将Controller和View重新组合在一起,使它们彼此可靠。 在纯粹的Asp.net MVC应用程序中,UI构建在Asp.net MVC上,服务器端只为此客户端实现提供服务,因此建议避免使用此function。

它可能在其他场景中很有用。 我记得我一直在阅读与Ruby on Rails客户端相关的东西。

无论如何。

一个有意义的例子

一个实际的例子是将javascript代码返回给Ajax请求,该请求只是提供一些function,这些function将在响应时立即执行而无需任何数据操作。

你在哪里可以从中受益? 好吧想想一个应用程序,它在应用程序中使用了大量的各种客户端类。 但某些页面仅使用它们的一小部分(甚至是动态分裂)。 在这种情况下,您将有两种可能性:

  1. 预先加载整个客户端类树 – 在一个巨大的单个文件中或在单独的文件中碎片化(如果视图将使用一小组前面已知类的子集,这将是正常的,否则这将导致大量服务器请求)
  2. 在需要时按需加载类 – 或者甚至可以根据需要在需要时执行某些类function。

在这种特殊情况下,第二种情况在网络流量,客户端内存资源和处理器负载方面会更好,效率更高。

这是一个实际案例:我有一个Global静态类,它包含整个系统使用的值的静态属性。

其中一些值需要与JS代码共享 。 所以我创建了一个返回JavaScriptResultAction

[OutputCache(Duration = 999999)] public virtual JavaScriptResult Global() { var script = $@" MaxNotificaitonsToShow = {GlobalSettings.MaxNotificaitonsToShow}; ItemsPerPage = {GlobalSettings.ItemsPerPage}; "; return JavaScript(script); } 

在页脚中我加载页面:

  

现在我可以在任何Javascript文件中获取值:

 if(ItemsPerPage == 25) { alert('it works!'); } 

看看我在这篇文章中的回复;

MVC如何返回运行javascipt方法的指令?

这将返回页面的部分视图。 如果你想通过一个json对象进行迭代,那么从你的控制器返回一个json对象并使用类似下面的东西;

 var obj = eval('(' + msg + ')'); 

上面的msg是来自控制器的返回对象;

然后,

 $.each(obj.Objects, function() { do something with object }); 

上面的“对象”是返回的json对象中的属性。

所以在c#中

 public class JsonObject() { List Objects{get;set;} } 

将上述对象返回到视图。

这有意义还是你想要一个工作样本?