繁体   English   中英

使用Asp.Net MVC在javascript中删除硬编码字符串的最佳方法

[英]Best way to remove hardcoded string in javascript with Asp.Net MVC

在我的javascript文件中,我有太多引用控制器操作的hardcorded url。 有时,我也会直接从我的javascript中显示消息。

从javascript文件中删除所有这些硬编码字符串的最佳方法是什么?

  1. 第一步 ,使用T4MVC自动生成一组结构化的.NET类,用于描述ASP.NET MVC的应用程序结构

  2. 第二步 ,创建一个新的局部视图,将T4MVC描述的服务器端信息定义为一组Javascript常量。

     <script type="text/javascript"> var SHOPPING_CART_DETAIL_URL = '@Url.Action(MVC.ShoppingCart.Detail(Model.ShoppingCartId))'; var CLIENT_DETAIL_URL = '@Url.Action(MVC.Client.Detail(Model.ClientId))'; var USER_IS_ADMIN = @(User.IsInRole(Roles.Admin) ? "true" : "false"); </script> 
  3. 第三步 ,将这个局部视图包含在您需要的任何页面的头部。 您还可以将其包含在常规页面布局的头部。 确保在其余JavaScript文件之前加载。

  4. 第四步 ,在整个JavaScript文件中使用新定义的JavaScript常量。

为此,我使用T4MVC 它允许您使用强类型对象代替文字字符串。 您需要在视图中初始化您的javascript,但除此之外它的效果很好。

对于消息等,这里有一些想法: 多语言javascript应用程序的不同方法是什么

如果您想避免使用T4MVC,您可以创建一个解析JS文件的Controller。 只需在Global.asax中配置一个捕获所有javascript url的路由,该操作将准备好JS文件,解析它,返回带有URL的结果。

        routes.MapRoute(
            "Javascript",
            "{url}.js",
            new { controller = "Javascript", action = "Parse" }
        );

然后编写一个读取请求的URL的动作,找到JS文件,根据键/值字典替换值。 如果需要,可能甚至将Key / Value词典外化。 剩下的由你决定。

另一种选择是使用返回Javascript代码的控制器操作。 该javascript代码将是填充了MVC生成的URL的变量列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM