2012-10-29 58 views
1

我想有對URL默認參數,這樣當用戶在自己發送的參數,如:asp.net mvc3可以Global.asax接受無控制器和無動作參數?

http://mysite.com/argument

這樣的說法得到(無形)路由先SomeController/SomeAction/ID =參數,然後,如果沒有發現一個404或301.

我希望global.asax RegisterRoutes將具有此功能。任何幫助將不勝感激。

+0

寫作問題:請避免添加簽名,因爲您已將其添加到您的用戶名中。如果您碰巧擁有比您的用戶名更多的名稱 - 請考慮修改用戶名。 –

回答

3

您可以設置要做到這一點的路線,但它會與「通用」的方式MVC設置的干擾:

routes.MapRoute(
    name: "ControllerlessRoute", 
    url: "{id}", 
    defaults: new { controller = "SomeController", action = "SomeAction" } 
); 
+1

爲我工作,謝謝。 – aldosa

2

路線「/參數」到你的動作,並返回要麼有趣的觀點或404 /三百零二分之三百零一結果取決於你的需要:

routes.MapRoute(
    name: "ControllerlessRoute", 
    url: "{id}", 
    defaults: new { controller = "SomeController", action = "SomeAction" } 
); 

class SomeController{ 
    ActionResult SomeAction(id) 
    { 
    if (NotFound) 
    { 
     return Custom404View(); 
    } 
    else if (NeedRedirect) 
    { 
     return new Custom301View{Url:RedrectUrl}; 
    } 

    return View(); 
    } 
} 

定製301查看可以發現http://forums.asp.net/p/1337938/2700733.aspx的樣品。

public string Url { get; set; } 
public override void ExecuteResult(ControllerContext context) 
{ 
    context.HttpContext.Response.StatusCode = 301; 
    context.HttpContext.Response.RedirectLocation = Url; 
    context.HttpContext.Response.End(); 
} 
相關問題