2009-10-23 3 views
1

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

<% 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

Вы действительно заботитесь о 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(); 
    } 
+0

Nice. Однако мне нужен дополнительный перенаправление. Было бы лучше иметь специальный Html.BeginForm, который использовал маршрутизацию ASP.NET MVC ... –

2

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

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

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

Thanks. Я думаю, что оставлю его так, как сейчас, потому что я думаю, что с javascript это может привести к непоследовательному поведению ... –

+0

Добро пожаловать. И да, я бы не использовал JS в этом случае, если только он не должен иметь URL-адреса таким образом. –

Смежные вопросы