Вопрос

Здравствуйте, возможно ли иметь форму 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: // имя_компьютера / СБ / XXX

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

Это было полезно?

Решение

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

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

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

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

    public ActionResult Detail(string nomsat)
    {
       ...
       return View();
    }

Другие советы

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

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

<fieldset>
    <legend>Opciones</legend>
    <%= Html.DropDownList("nomSat")%>
    <input type="button"  
     onclick="window.location=('/<%=Url.Action("CanviaOpcions", "Sat") %>/' + 
     $('#nomSat').val())" />
</fieldset>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top