我使用AngularJS创建了一个使用.NET MVC的单页面应用程序(不是很重要,因为路由现在几乎是流行的js框架)。
我使用MVC组件而不是常规页面来做一些动态变量,app启动类型配置。
为了阻止默认路由发生并保持我的页面路由到Default.cshtml
页面,我在web.config中使用URL Rewrite,如:
<rewrite>
<rules>
<rule name="Default" stopProcessing="true">
<match url="^(?!lib|api|assets|app/|common|main|app.min|signalr|templates).*" />
<action type="Rewrite" url="Default.cshtml" />
</rule>
</rules>
</rewrite>
我的角度应用然后使用html5Mode
路由,它使用本机网址而不是hashbang hack。这很好用,但感觉真的很讨厌。我从http://tarkus.me/post/32121691785/angularjs-with-asp-net-mvc-4建模了这个。
我的问题是:是否有更好/更干净的方法来实现这一目标?
答案 0 :(得分:1)
我使用相同的设置(MVC + JS框架)并通过路由配置处理Web请求的重定向。
global.asax中的AppStart调用路由配置方法来构建所有应用程序路由。
在那里我只修改现有的默认路由,以便始终转到我选择的控制器/操作(通常是Home / Index),这样任何来到站点的请求都会返回相同的响应。
更新代码示例:
这样你就不会在网址中定义任何部分,而是硬编码默认值以始终转到你想要的控制器/动作
routes.MapRoute(
name: "Default",
url: "",
defaults: new { controller = "Home", action = "Index" }
);