0

У меня проблема с маршрутизацией. Я использую функцию JavaScript ниже, чтобы сделать запись в мой контроллер StudentSearch. Когда я сделал сообщение, он передал только первый параметр. Ожидается нулевая страница; однако дата начала и окончания даты имеет значения даты, но оба параметра равны нулю. Что мне здесь не хватает? Я прочитал документацию и выполнил поиск в Интернете, и пока у меня не было никакого успеха.ASP.NET MVC 4 Route Issue

//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} 
       ); 

обновление в 02:50 вечера: После прочтения Chris комментарий, я изменил код. Он не направлялся на контроллер StudentSearch. Вместо этого я получил 404 страницы. Как вы можете видеть, я прошел в Jane для searchvalue и student1, student2 соответственно для начала и конца (это не было проблемой, так как для параметра ожидается строка). .../StudentSearch/Поиск/Jane/student1/student2

ответ

1

Не уверен, что вы ожидаете отсюда. Переменная url будет разрешена к строке '/StudentSearch/Search', потому что вы передаете пустые строки для всех параметров маршрута. В любом случае, это бессмысленно. Вы получите то же самое только с @Url.Action("Search").

Затем вы добавляете переменную SearchValue к этой строке, которая приходит от формы $('#Search').val(). Вот и все. StartDate и EndDate никогда не используются, особенно при построении URL-адреса.

Тогда ваш маршрут сам не принимает ничего, кроме SearchValue в качестве подстановочной строки. Даже если вы добавили StartDate и к URL-адресу, все просто переместилось бы в параметр SearchValue, и ваши действительные параметры действия StartDate и EndDate все равно были бы пустыми. Ваш маршрут должен быть примерно таким:

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

Чтобы правильно заполнить все параметры.

+0

Я боролся и не мог понять, почему он не работает. Мне пришлось перезагрузить компьютер из-за некоторых необходимых обновлений. Я снова запустил приложение, и он сработал. – user3802347