asp.net mvc中JavaScriptResult的工作示例

Rav*_*ngh 21 javascript c# asp.net-mvc jquery

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

Kor*_*yem 34

注意:这个答案写于2011年,现在看着它,它更像是一个黑客.最好通过访问JSON端点API的AJAX请求来加载值.

这是一个实际案例:我有一个GlobalSettings静态C#类,它包含在ASP.NET MVC后端方面通过整个系统使用的值的静态属性.

其中一些值需要与JS代码共享.所以我创建了一个返回JavaScriptResultAction,它基本上将这些值抽出到全局JS变量中.

注意:更改输出缓存周期以满足您的需要

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

然后我通过HTML页脚在所有页面中将此操作的响应加载为JS文件:

<script type="text/javascript" src="/JS/Global"></script>
Run Code Online (Sandbox Code Playgroud)

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

if(ItemsPerPage == 25)
{
   alert('it works!');
}
Run Code Online (Sandbox Code Playgroud)


Rob*_*nik 16

尽可能避免

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

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

无论如何.

一个有意义的例子

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

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

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

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

  • 这实际上并没有回答提供工作示例的请求.这样做对于仅使用MVC初始加载html /脚本和作为API的Javascript MVVM应用程序非常有意义. (9认同)