문제

내 ASP.NET MVC 응용 프로그램에는 다음과 같은 GET 입력 필드가 있습니다.

<% using (Html.BeginForm("Search", "Products", FormMethod.Get) { %>
   <input type="text" name="searchQuery" id="searchQuery" />
<% } %

나는 이것이 경로로 가고 싶습니다 :

routes.MapRoute("ProductSearchRoute", 
    "Products/Search/{searchQuery}/{pageNumber}", 
new { controller = "Products", action = "Search", pageNumber = 1 });

문제는 쿼리 문자열로 /Products로 이동한다는 것입니다.제품?searchQuery=Motoroil.내 ProductSearchRoute를 사용하고 대신 /Products/Search/Motoroil을 구성하려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

제가 올바르게 이해했다면 양식의 입력을 기반으로 양식이 게시되는 위치를 동적으로 변경하려고 하시나요?

양식의 대상 속성을 변경하려면 자바스크립트를 사용해야 합니다.BeginForm()은 HTML 관점에서 정적인 form 태그를 렌더링하기 위한 것입니다.

다른 팁

당신은 시도 할 수 있습니다 :

<% using (Html.BeginRouteForm("ProductSearchRoute", FormMethod.Get)) %>

친절,

public ActionResult SearchQuery (string searchQuery)
{
    return RedirectToAction (searchQuery, "/Products/Search" );
}

public ActionResult Search (string searchQuery)
{
    return View();
}

@Daniel Elliott가 제안한 것처럼 BeginRouteForm을 사용하십시오. URL이 올바르게 생성되도록하려면 경로 테이블에 정의 된 동일한 이름으로 RoutEvalues를 설정해야합니다.

@using (Html.BeginRouteForm("ProductSearchRoute", new { searchQuery= "my query", pageNumber = 1 })
{

}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top