ASP.NET MVC: как передать переменную строки запроса - PullRequest
2 голосов
/ 01 октября 2010

Я некоторое время работал над веб-формами и не привык к mvc.

Вот что я хочу сделать:

<% if guest then %>
    URL.RouteURL("AcccountCreate?login=guest")
<% end if %>

Однако я не могу этого сделатьпотому что он говорит, что маршрут с этим именем не был создан.И я предполагаю, что было бы глупо создавать маршрут для этого.

Ответы [ 2 ]

3 голосов
/ 01 октября 2010
<%= Url.Action("AcccountCreate", new { login = "guest" }) %>

или если вы хотите создать ссылку напрямую:

<%= Html.ActionLink("create new account", "AcccountCreate", new { login = "guest" }) %>

Вы также можете указать контроллер:

<%= Html.ActionLink(
    "create new account", // text of the link
    "Acccount", // controller name
    "Create", // action name
    new { login = "guest" } // route values (if not part of the route will be sent as query string)
) %>
1 голос
/ 01 октября 2010

Это не совсем то, что MVC-маршрутизация была предназначена для использования. Лучше установить свой URL как:

AccountCreate/guest

И тогда ваше действие примет этот параметр

public ActionResult AccountCreate(string AccountName)
{
    //AccountName == guest
    return View();
}

Тогда вы можете получить запись о маршрутизации, например:

routes.MapRoute(
    "AccountCreate", // Route name
    "{controller}/{action}/{AccountName}", // URL with parameters
    new { controller = "AccountCreate", action = "Index", AccountName = UrlParameter.Optional } // Parameter defaults
);

Однако, если вы создадите actionlink с параметром и без соответствующего маршрута, он создаст для вас переменную querystring.

...