1

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

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

4

3 回答 3

3
  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 常量。

于 2012-08-13T16:44:23.000 回答
1

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

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

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

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

于 2012-08-13T16:54:38.493 回答
1

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

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

于 2012-08-13T16:43:42.090 回答