用Asp.Net去除javascript中的硬编码字符串的最佳方法MVC
在我的javascript文件中,我有太多引用控制器操作的hardcorded url。有时,我也有消息直接从我的JavaScript显示。用Asp.Net去除javascript中的硬编码字符串的最佳方法MVC
什么是从JavaScript文件中删除所有这些硬编码字符串的最佳方法?
为此,我使用T4MVC。它将允许您使用强类型对象代替文字字符串。您需要在您的视图中初始化您的JavaScript,但除此之外它效果很好。
对于消息等。这里有一些想法:what are the different approaches to multilingual javascript applications
步骤一,使用T4MVC自动生成一套结构化描述你的ASP.NET MVC的应用程序.NET类的 结构
-
第二步,创建一个新的局部视图,由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>
步骤三,包括 你需要它在任何网页的头部这个局部视图。您也可以将其包含在您的常规 页面布局的头部。确保在之前加载其余的JavaScript文件。
第四步,在您的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填充的变量列表。