2014-06-11 100 views
0

我已經創建了一個使用.NET MVC的AngularJS核心的單頁應用程序(並不重要,因爲路由在現在幾乎流行的js框架中)。SPA與.NET MVC

我使用MVC組件而不是常規頁面來做一些動態變量app啓動類型配置。

爲了阻止發生默認路由,並保持我的網頁排到Default.cshtml頁我用URL重寫我的web.config這樣的:

<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破解。這工作正常,但它感覺真的很討厭。我從http://tarkus.me/post/32121691785/angularjs-with-asp-net-mvc-4模擬此。

我的問題是:有沒有更好的/更乾淨的方式來實現這一目標?

回答

1

我使用相同的設置(MVC + JS框架),並通過路由配置處理Web請求的重定向。

global.asax中的AppStart調用路由配置方法來構建所有應用程序路由。

在那裏,我只是修改現有的默認路由,以始終轉到我選擇的控制器/操作(通常是Home/Index),這樣任何來到站點的請求都會返回相同的響應。

更新代碼示例:

這樣,你沒有定義的URL的任何部位,但硬編碼的默認經常去控制器/動作你要

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

了你可以分享的代碼示例? – amcdnl

+0

這是相當好一點,你是否也有一個C#控制器中的Home和Index,就像盒子出來一樣?我認爲是這樣的。 – amcdnl

+0

當你在Visual Studio中創建一個新的MVC項目時,它通常會創建它。這就是說,如果你選擇「空」,那麼我不相信它。 – Brocco