jquery datepicker Перейти к относительной дате URL - PullRequest
1 голос
/ 04 ноября 2011

Я использую Asp.net MVC3 с JQuery виджет DatePicker. Я хочу, чтобы пользователь щелкнул по дате и перешел на URL этой даты. например. http://mysite.com/home/index/20111231

Я нашел похожий пост, но это не относительный URL. jQuery UI Datepicker перейти к дате URL

мой код работает для первого клика, но при втором клике URL удвоился и выдал ошибку 404. 1-й клик: http://mysite.com/home/index/20111231 2-й клик: http://mysite.com/home/index/home/index/20111231

код в поле зрения:

<script type="text/javascript">
    $(document).ready(function () {
        $("#datepicker").datepicker({
            beforeShowDay: function (date) {
                return [true, "active"];
            },
            onSelect: function (dateText, inst) {
                document.location.href = "Home/Index/" + dateText;
            },
            onChangeMonthYear: function(year, month, inst)
            {
            },
            dateFormat: "yymd",
            showOtherMonths: true,
            selectOtherMonths: true,
            changeMonth: true
        });
    });
</script>
<h2>@ViewBag.Message</h2>
<div id="datepicker">
</div>

код в контроллере:

public class HomeController : Controller
{
    public ActionResult About()
    {
        return View();
    }

    public ActionResult Index(string id)
    {
        ViewBag.Message = "Welcome " + id;

        return View();
    }
}

ОБНОВЛЕНО : мое решение состоит в том, чтобы создать виртуальный путь на сервере и прикрепить его к клиенту HTML.

document.location.href = '@Request.Url.GetLeftPart(UriPartial.Authority)@HttpRuntime.AppDomainAppVirtualPath' + "/Home/Index/" + dateText;

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Я рекомендую использовать помощник URL для создания URL.Таким образом, он все еще работает после того, как вы изменили маршруты и т. Д.

@Url.Action("Index", "Home", new { id = dateText })
1 голос
/ 04 ноября 2011

Вам нужно добавить / в начало вашего пути:

document.location.href = "/home/Index/" + dateText;

...