【问题标题】:How to pass datetime from popup dialog to mvc controller如何将日期时间从弹出对话框传递到 mvc 控制器
【发布时间】:2017-07-21 17:01:30
【问题描述】:

我的要求是当我单击一个按钮时,它应该打开一个对话框,我可以在其中选择日期,最好是开始日期和结束日期。并单击确定/提交时,它应该将日期时间传递给控制器​​ [HttpPost] 操作方法。 这是我尝试过的......不幸的是它没有工作

input name="ActivateBtn" type="submit" class="btn btn-primary" value="Activate" onclick="opendatedialog()" />
<script>
    function opendatedialog() {
        $("#datepickerdialog").dialog({
            height: 300,
            width: 500,
            modal: true,
            resizable: false,
            buttons: {
                "OK": function () {
                    var viewUrl = '@Url.Action("Activate", "User")';
                    $.post(viewUrl, new { startDate: $('.datepickerstart').val(), endDate: $('.datepickerend').val() });
                    $(this).dialog("close");
                    return true;
                },
                "Cancel": function () { $(this).dialog("close"); return false; }
            },
            open: function () {
                $(this).siblings('.ui-dialog-buttonpane').find("button:contains('OK')").focus();
            }
        });
    }
    $(function () {
        $('.datepickerstart').datepicker(
            {
                minDate: 0,
                dateFormat: 'yy-mm-dd'
            }).datepicker("setDate", "0");
        $('.datepickerend').datepicker(
            {
                minDate: 0,
                dateFormat: 'yy-mm-dd'
            }).datepicker("setDate", "2099/12/31");
    });

//用户控制器

[HttpPost]
public ActionResult Activate(DateTime startDate, DateTime endDate)
{
    //TO DO
    return RedirectToAction("Index");
}

点击激活按钮时,会弹出带有日期选择器的对话框。但是之后单击确定按钮不会执行任何操作。

【问题讨论】:

  • 在函数中捕获单击事件上的 ok 按钮,并在其中创建一个指向您的控制器操作的 AJAX 调用帖子,传递您需要的内容。这些部分中的每一个都可以轻松查找基本示例。你可以根据你的要求蜘蛛掉它。如果您正在使用 Razor 标记并且您的 JS 嵌入其中而不是单独的文件中,您可以轻松地为调用创建一个 URL.Action 链接到您的控制器,而无需手动担心 url 路径。
  • 您需要将用户重定向到另一个页面吗?或者您只需要通过 ajax 调用您的操作并将用户保持在同一页面中?
  • ajax 的全部意义在于保持在同一页面上。您的 return RedirectToAction("Index"); 毫无意义,因为 ajax 调用永远不会重定向。如果你想重定向,做一个普通的表单提交。
  • @Alisson 它将保留在同一页面中。基本上会在同一页面中出现并关闭一个对话框。激活操作方法尚未完成。此时调用本身没有达到激活操作方法。
  • @Nard 你能提供一个代码 sn-p 吗?

标签: javascript c# jquery asp.net-mvc


【解决方案1】:
$.post(viewUrl, { startDate: $('.datepickerstart').val(), endDate: $('.datepickerend').val() });

这确实有效。我已经删除了“新”

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 2015-10-07
    • 2015-09-13
    • 1970-01-01
    相关资源
    最近更新 更多