문제

안녕하세요 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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top