ASP.NET MVC форма, которая перенаправляет на маршрут - PullRequest
1 голос
/ 23 октября 2009

Здравствуйте, возможно ли иметь форму ASP.NET MVC, которая использует маршруты, определенные в Global.asax, для публикации своих значений (через запрос GET)? У меня есть форма, определенная так:

<% using (Html.BeginForm("CanviaOpcions","Sat",FormMethod.Get))
    { %>
    <fieldset>
        <legend>Opciones</legend>
        <%= Html.DropDownList("nomSat")%>
        <input type="submit" />
    </fieldset>
<% } %>

и следующий маршрут в моем global.asax:

routes.MapRoute(
    "Canvia Opcions",
    "Sat/{nomSat}",
    new { controller = "Sat", action = "CanviaOpcions" }
    );

Я хочу, чтобы после отправки формы с nomSat со значением XXX в моем браузере был следующий URL: http://machinename/sat/XXX

Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 23 октября 2009

Вас действительно волнует URL, по которому вы переходите, или вас интересует только следующий URL, который видит пользователь?

Если вам нужен только URL, который видит пользователь, вам не нужно использовать метод, который вы пытаетесь.

То, что вы можете сделать, - это создать действие post, которое читает параметр «nomsat», а затем перенаправить на другое действие с нужным URL-адресом.

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(string nomsat)
    {
        ...
        return RedirectToAction("Detail", new RouteValueDictionary {{"nomsat", nomsat}});
    }

    public ActionResult Detail(string nomsat)
    {
       ...
       return View();
    }
2 голосов
/ 23 октября 2009

Нет, вы не можете добавить к параметрам маршрутизации форму HTML.

Вы можете смоделировать поведение с помощью функции Javascript. Как это:

<fieldset>
    <legend>Opciones</legend>
    <%= Html.DropDownList("nomSat")%>
    <input type="button"  
     onclick="window.location=('/<%=Url.Action("CanviaOpcions", "Sat") %>/' + 
     $('#nomSat').val())" />
</fieldset>
...