【问题标题】:Calling MVC view from jQuery Datepicker()从 jQuery Datepicker() 调用 MVC 视图
【发布时间】:2014-04-15 14:16:37
【问题描述】:

如何从布局视图中的 jQuery Datepicker() 设置调用/刷新视图?

我的布局视图中有一个 Datepicker 设置,如下所示:

<header>
        <div class="float-left" id="CalenderView">
            <span class="datepicker">Date:
                <input type="text" id="datepicker" size="10"></span>
        </div>
</header>

页脚中的脚本 ....

    <script>
        $(function () {
            $("#datepicker").datepicker({
                dateFormat: 'mm-dd-yy',
                onSelect: function () {
                    var date = $("#datepicker").datepicker('getDate');
                    $.ajax({
                        type: 'POST',
                       data: { "date": date },
                        url: '/Home/Calender',
                        dataType: 'json',
                        success: function (response) {},
                        error: function (data) { }
                    });
                }
            });
        });
    </script>

在我的 HomeController ...

    public ActionResult Calender(String date)
    {
        var rev = new DashboardRevenue();
        rev.PPMRevenue = 1500;
        rev.ProductRev = 1000;
        if (Request.IsAjaxRequest())
        {
            return View("Dashboard",rev);
        }
        else
        {
            return View();
        }
    }

控制器中的返回视图语句被忽略。始终呈现原始视图。

【问题讨论】:

    标签: jquery asp.net-mvc datepicker


    【解决方案1】:

    Request.IsAjaxRequest() 查看“X-Requested-With”标头并检查值是否为“XMLHttpRequest”。

    request.Headers["X-Requested-With"] == "XMLHttpRequest"
    

    如果它没有进入这个 if 语句,那么很可能没有包含标头值。使用浏览器或 Fiddler 中的开发人员工具,检查传入的标头。

    IsAjaxRequest 的来源。

    【讨论】:

    • 如果我在 return View("Dashboard", rev);在控制器中,它击中它。所以 Request.IsAjaxRequest() 正在工作。然而,返回 View(...) 对显示的内容没有影响。
    • 在 ajax 回调的 success 部分,您没有对 response 做任何事情。你应该有类似的东西:function (response) { $('#myDashboard').html(response); }
    • 谢谢。但我真的想用更新后的模型在控制器中渲染视图。我只是在函数(响应){...}中看不到如何做到这一点,我尝试了成功:函数(响应){$('/Home/Calendar').html(响应); }。也许我应该考虑完全不同的方法。
    • 你的方法是正确的。 action 方法将渲染视图并返回它。在我的示例$('#myDashboard') 中,我正在设置ID 为myDashboard 的div 的HTML。在您的示例中,您使用的是$('/Home/Calendar'),这是不正确的。您需要使用 jQuery 来查找页面上要放置返回的 HTML 的元素。 /Home/Calendar 不正确。
    • 但是我没有要指向的 div - 我有一个要呈现的 MVC 视图 - 与日期选择器所在的页面(布局视图)完全不同。再次感谢您的回复。
    猜你喜欢
    • 2015-02-01
    • 2016-04-15
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多