Я пытаюсь вызвать метод действия с помощью jQuery, и получил помощь по передаче параметров здесь: Вызов метода действия в MVC с jQuery и параметрами, не работающими . Однако, хотя параметры теперь отправляются правильно, в методе действия мне нужно перенаправить (передавая те же параметры) другой метод действия. В отладчике я вижу, что перенаправление выполняется, и параметры все еще там, но возвращенное представление не обновляется соответственно ...
Есть ли проблема с вызовом метода действия, который перенаправляет с помощью jQuery?
Метод действия, вызванный jQuery:
public ActionResult SelectDate(string date)
{
DateTime dateObject = DateTime.Parse(date);
MyCalendar calendar = new MyCalendar();
string number = calendar.GetWeekNumber(dateObject).ToString();
string year = dateObject.Year.ToString();
return RedirectToAction("Edit", new { number = number, year = year });
}
Метод действия перенаправлен на:
public ActionResult Edit(string number, string year) //Why string here???
{
int n;
if (string.IsNullOrEmpty(number))
n = myCalendar.GetWeekNumber(DateTime.Today);
else
n = Int32.Parse(number);
int y;
if (string.IsNullOrEmpty(year))
y = DateTime.Today.Year;
else
y = Int32.Parse(year);
List<Customer> customers = _repository.Customers;
ViewData["Customers"] = new SelectList(customers, "CustomerId", "CustomerName");
ViewData["WeekNumber"] = n;
ViewData["Year"] = y;
return View();
}
Или jQuery get () не является правильным способом вызова метода действия для загрузки новой страницы? Обратите внимание, что выполнение того же действия с ActionLink работает нормально, просто мне нужно вызвать его с помощью jQuery, потому что я использую плагин datepicker, а также кнопку для вызова действия.
Что я делаю не так?
UPDATE:
На самом деле, RedirectToAction, похоже, не является проблемой, я изменил код так, чтобы jQuery теперь вызывал метод конечного действия напрямую (выполняя работу первого метода действия непосредственно в jQuery, то есть преобразовал дату в неделю и год). Но я все еще не получаю новую страницу с новой неделей и годом.
Вот новый jQuery:
function selectWeek() {
$('#selectWeekButton').click(function (event) {
var date = $('#selectWeekId').val();
var selectedDate = new Date(date);
var year = selectedDate.getFullYear();
var week = selectedDate.getWeekOfYear();
var url = '<%: Url.Action("Edit") %>';
$.get(url, { number: week, year: year }, function (data) {
// alert('Test');
});
});
}
Опять же, использование get является неправильным? Я не хочу загружать контент в html-тег, я просто хочу использовать jQuery, чтобы делать то же самое, что и actionlink, то есть вызывать метод действия, чтобы получить представление редактирования ...
Например, эта actionlink работает нормально, вызывая метод действия с именем Next, который перенаправляет на Edit и показывает новую неделю и год. View:
<a href="<%=Url.Action("Next", new { number=ViewData["WeekNumber"], year = ViewData["Year"] })%>">
>></a>
Но я хочу сделать это (или редактировать напрямую) в jQuery ...