Изменение функции Javascript onchange - в / в строку URL? - PullRequest
0 голосов
/ 13 октября 2011

У меня есть веб-страница mvc3, которая принимает параметр url, представляющий дату, т.е. dd-MM-гггг

public ActionResult Calendar(string startDate, string UserId, string status, bool myPage = false)

У меня есть частичное представление в представлении календаря, которое вызывает событие onchange всякий раз, когда ddlизменяется, представляя параметр состояния в методе, и также передается в URL.

Мой маршрут карты для представления календаря выглядит следующим образом:

routes.MapRoute(
            "TimesheetCalendar", // Route name
            "Timesheet/Calendar/{startDate}/{UserId}", // URL with parameters
            new { controller = "Timesheet", action = "Calendar", UserId = UrlParameter.Optional } // Parameter defaults
        );

И мое событие обмена javascript (вызывается в отдельном частичном представлении) выглядит следующим образом:

<script type="text/javascript">
$(function () {
    $(".ddl").change(function () { changePage(); });
});

function changePage() {
    location.href = '@Url.Action("Calendar", "Controller", new { startDate = @ViewBag.startDate, UserId = (string)null })/' + '@ViewBag.userId' + '?status=' + $('#ControllerStatus').val() + '&myPage=@ViewBag.myPage';

}

В методе получения календаря в моем контроллере я установил Viewbag.startdate как date.ToString(dd-MM-yyyy).

Работает отлично, иногда.И когда я меняю статус ddl, страница обновляла календарь и частичное представление в соответствии со статусом.Однако иногда (кажется, что неделя моего календаря - текущая неделя), когда я изменяю ddl , браузер перенаправляет на 404 error, а не на дату как dd-MM-yyyyв URL он отображается как dd/MM/yyyy и, таким образом, полностью портит URL.

Я новичок в javascript и понятия не имею, почему он это сделал?Я надеюсь, что дал достаточно информации о своем коде.Кто-нибудь знает, почему строка, представляющая дату, внезапно обретает дефисы - меняется на тире /?

Любая помощь с благодарностью

1 Ответ

0 голосов
/ 14 октября 2011

Извините. Только что осознали, что метод ToString по умолчанию для дат пользователей a slash/ и что где-то между проходящими датами назад и вперед между представлением и его частичным представлением я устанавливал дату ToString(), а не ToString("dd-MM-yyyy")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...