使用.NET MVC的SPA

时间:2014-06-11 12:55:44

标签: asp.net .net asp.net-mvc angularjs url-rewriting

我使用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建模了这个。

我的问题是:是否有更好/更干净的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

我使用相同的设置(MVC + JS框架)并通过路由配置处理Web请求的重定向。

global.asax中的AppStart调用路由配置方法来构建所有应用程序路由。

在那里我只修改现有的默认路由,以便始终转到我选择的控制器/操作(通常是Home / Index),这样任何来到站点的请求都会返回相同的响应。

更新代码示例:

这样你就不会在网址中定义任何部分,而是硬编码默认值以始终转到你想要的控制器/动作

routes.MapRoute(
    name: "Default",
    url: "",
    defaults: new { controller = "Home", action = "Index" }
);