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



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

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

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

  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文件的控制器。只需在 Global.asax 中配置一个捕获所有 javascript url 的路由,该操作将准备好 JS 文件,解析它,返回包含 URL 的结果。

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

然后编写一个操作来读取请求的 URL,查找 JS 文件,根据键/值字典替换值。如果需要,甚至可以外部化该键/值字典。剩下的就看你了。

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

最新更新