【发布时间】: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