0

라우팅 관련 문제가 있습니다. 아래 JavaScript 함수를 사용하여 내 컨트롤러 StudentSearch에 대한 게시물을 작성합니다. 게시물을 만들었을 때 첫 번째 매개 변수 만 전달했습니다. 예상되는 페이지는 null입니다. 그러나 시작 및 종료 날짜에는 날짜 값이 있지만 두 매개 변수는 모두 null입니다. 내가 여기서 무엇을 놓치고 있니? 나는 문서를 읽고 온라인으로 검색하고, 나는 지금까지 성공을 거두지 못했다. 오후 2시 50분에서ASP.NET MVC 4 라우팅 문제

//Javascript function 
findStudent function() 
    { 
    var SearchValue= $("#Search").val(); 
    var StartDate = $('#StartDate').val(); 
    var EndDate = $('#EndDate').val(); 

    var url = '@Url.Action("Search")'; 

    location.href = url + "/" + SearchValue + "/" + StartDate +"/" + EndDate+; 
} 

//This is the ActionResult in the controller 
public ActionResult Search(string SearchValue, string StartDate , string EndDate) 
    { 
    //EndDate and STart Date are null here. 
    } 

//the route section in my RouteConfig.cs file 

routes.MapRoute(
       name: "Search", 
       url: "StudentSearch/Search/{SearchValue}/{StartDate}/{EndDate}", 
       defaults: new { controller = "StudentSearch", action = "Search", 
       SearchValue = UrlParameter.Optional,StartDate=UrlParameter.Optional, 
       EndDate = UrlParameter.Optional} 
       ); 

갱신 : 크리스 주석을 읽은 후, 나는 코드를 수정했습니다. 그것은 StudentSearch 컨트롤러로 라우팅하지 않았습니다. 대신 404 페이지가 없습니다. 당신이 볼 수 있듯이 Jane에서 searchvalue와 student1, student2는 각각 시작과 종료 날짜로 전달되었습니다 (매개 변수가 문자열로 예상되므로 문제가되지 않았습니다). .../StudentSearch/Search/Jane/student1/student2

답변

1

여기에서 기대하는 바가 확실하지 않습니다. url 변수는 모든 경로 매개 변수에 빈 문자열을 전달하기 때문에 '/StudentSearch/Search' 문자열로 해석됩니다. 어쨌든 그것은 실제로 무의미합니다. 너는 단지 @Url.Action("Search")과 똑같을거야.

그런 다음 변수 SearchValue을이 문자열에 추가합니다. 형식은 $('#Search').val()입니다. 그리고 그게 다야. StartDateEndDate은 URL을 구성하는 데 사용되지 않습니다.

그런 다음 경로 자체는 와일드 카드 문자열로 SearchValue 이외의 문자를 허용하지 않습니다. URL에 StartDateEndDate을 추가하더라도 모두 SearchValue 매개 변수로 들어가고 실제 StartDateEndDate 조치 매개 변수는 여전히 null입니다. 귀하의 경로는 다음과 같아야합니다.

url: "StudentSearch/Search/{SearchValue}/{StartDate}/{EndDate}", 

모든 매개 변수를 올바르게 기입하십시오.

+0

나는 싸우고 있었고 왜 작동하지 않는지 알 수 없었다. 업데이트가 필요한 일부 컴퓨터 때문에 컴퓨터를 다시 시작해야했습니다. 응용 프로그램을 다시 실행하고 작동했습니다. – user3802347