2013-05-09 61 views
0

角度路線:避免用戶得到的諧音

angular.module('AMS', []). 
    config(['$routeProvider', function ($routeProvider) { 
     $routeProvider. 
      when('/dashboard', { templateUrl: '/Dashboard', controller: dashboardController }). 
      when('/settings', { templateUrl: '/Settings', controller: settingsController }). 
      otherwise({ redirectTo: '/dashboard' }); 
    }]); 

樣品:

/* client side route */ 
http://localhost:4117/#/dashboard 

/* controller that returns the partial */ 
http://localhost:4117/Dashboard 

一切正常,但是如果我把在同一網址瀏覽器(沒有領先/#/),部分仍然會返回,這是不好的。

如何防止發生這種情況?

+0

貧民窟鑽機方式:沒有返回意見指數的動作,但感覺不對,即使它的工作原理。此外,它只能防止意外的看法,因爲任何人都可以轉到路由配置並查看ASP.NET MVC路由。 – 2013-05-09 21:48:07

回答

0

您可以將自定義ActionMethodSelectorAttribute用於您的服務器端方法。例如:

public class AjaxRequestAttribute : ActionMethodSelectorAttribute 
{ 
    public override bool IsValidForRequest(ControllerContext controllerContext, 
              MethodInfo methodInfo) 
    { 
     return controllerContext.HttpContext.Request.IsAjaxRequest(); 
    } 
} 

及用途:

[AjaxRequest] 
public JsonResult GetTemplates() 
{ 
... 
}