【问题标题】:SPA with .NET MVC带有 .NET MVC 的 SPA
【发布时间】:2014-08-01 13:05:45
【问题描述】:

我已经创建了一个使用 .NET MVC 核心和 AngularJS 的单页应用程序(并不是很重要,因为路由现在在几乎流行的 js 框架中)。

我使用MVC组件而不是常规页面来做一些动态变量,应用启动类型的配置。

为了阻止默认路由发生并保持我的页面路由到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>

然后我的 Angular 应用程序使用 html5Mode 路由,该路由使用本机 url 而不是 hashbang hack。这工作正常,但感觉真的很讨厌。我是从http://tarkus.me/post/32121691785/angularjs-with-asp-net-mvc-4 建模的。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    更新代码示例:

    这样,您无需在 url 中定义任何部分,而是将默认值硬编码为始终转到您想要的控制器/操作

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

    【讨论】:

    • 那更好一些,你是否也有像开箱即用的 c# 控制器中的 Home 和 Index ?我想是的..
    • 当你在 Visual Studio 中创建一个新的 MVC 项目时,它通常会创建它。话虽如此,如果您选择“空”,那么我不相信它会这样做。
    猜你喜欢
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2013-10-09
    • 2012-03-27
    • 1970-01-01
    • 2017-07-19
    相关资源
    最近更新 更多