ASP.NET MVC 양식은 경로로 리디렉션됩니다
-
06-07-2019 - |
문제
안녕하세요 Global.asax에 정의 된 경로를 사용하여 값을 게시하는 ASP.NET MVC 양식을 가질 수 있습니까 (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" }
);
나는 내 브라우저에 다음 URL을 갖도록 value xxx를 갖는 nomsat와 양식을 제출 한 후에 원합니다. http : // machinename/sat/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>
제휴하지 않습니다 StackOverflow