2013-04-18 28 views
1

我想在我的網站的URl後面有一些參數。 因此,mysite.com/ThisIsMyStringMessage,會顯示:url後的參數asp net mvc

Hello,ThisIsMyStringMessage。

當然,涉及到操作的視圖包含此:

Hello, @ViewBag.Message 

而且HomeController的:

public ActionResult Index(string message) 
    { 
     ViewBag.Message = message; 
     return View(); 
    } 

編輯與評論:

@Zim,我將有多個控制器。

@Jessee,這就是我在這裏所做的,謝謝,我真的不知道我在做什麼。

+3

mysite.com?message=ThisIsMyStringMessage –

+1

您將使用比的HomeController /索引之外的任何其它控制器/操作? – zimdanen

回答

2

使用默認路由,ThisIsMyStringMessage將被選爲Controller,而不是Action方法參數。你需要一個自定義路線才能做到這一點。嘗試在Global.asax默認路由之前如下:

routes.MapRoute(
    "RootWithParameter", 
    "{message}", 
    new { controller = "Home", action = "Index", message = UrlParameter.Optional } 
); 

另外,訪問法mysite.com?message=ThisIsMyStringMessage

1

您需要在您的RouteConfig.csGlobal.asax看看設置的路線與message代替id參數。現在它大概的樣子:

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

您需要的URL參數更改爲類似{controller}/{action}/{message}該工作。

另外,請小心在URL中傳遞字符串。 ASP.NET(以及一些現代瀏覽器)爲您提供了許多安全保護,可以防止人們從事像XSS這樣的惡意工作,但這可能不是您想要創建的習慣。