2013-09-26 1 views
5

Я хочу добавить строку запроса в конец URL-адреса, используя маршруты. Как это сделать в Global.asax?Добавить строку запроса в конце URL-адреса, используя маршруты в ASP.NET MVC3

routes.MapRoute(
    "Detail", 
    "{controller}/{action}/{id}/{name}", 
    new 
    { 
     action = "Detail", 
     name = UrlParameter.Optional, 
     // it is possible to add here query string(s) ? 
    }, 
    new[] { "MyProject.Controllers" } 
); 

Например, фактический URL содержит:

www.mysite.com/MyController/Detail/4/MyValue 

, но я хочу, чтобы создать что-то вроде:

www.mysite.com/MyController/Detail/4/MyValue?ref=test&other=something 

ответ

8

При создании URL-адреса действия, вы можете передать в дополнительных значений маршрута, например:

@Url.Action("Detail", "MyController", 
    new { id = 4, @ref = "test", other = "something" }) 

ref и other, которые не определены в шаблоне маршрута маршрута Detail, будут добавлены в качестве параметров строки запроса.

+0

Я буду использовать в любом случае 'Url.Action', я не нашел решение для автоматического размещения в Global.asax –

2

MVC.NET автоматически связывает параметры из строки запроса к вашему действию контроллера вход.

Пример вашего действия контроллера будет, как:

public ActionResult Detail(string id, string name, string test, string other){ 

} 

Кроме того, вы можете создать ссылку, используя код, как следующее:

UrlHelper helper = new UrlHelper(HttpContext.Current.Request.RequestContext); 
var url = helper.RouteUrl("Detail", new {id="testid", name="testname", ref="testref", other="testother"}); 
Смежные вопросы