每当用户按订单按钮时,我都会尝试在模态对话框中获取实际时间。
<a class="btn btn-primary" data-toggle="modal" data-target="#OrderModal">@MEDONET.Language.Doctor.Texts.Order</a>
因此,每次他在模态Div Ordermodal
中这样做<div id="OrderModal" class="modal fade" role="dialog">
@Html.Action("CreateOrderForm", Model.CreateOrderVM)
</div>
哪些呼吁创建订单form action
public ActionResult CreateOrderForm(CreateOrderVM createOrderVM)
{
createOrderVM.Minute = DateTime.Now.Minute.ToString().PadLeft(2, '0');
return View("CreateOrderForm", createOrderVM);
}
这样,该操作实际上每次都在运行并调用CreateOrderForm.cshtml文件
@{
Layout = null;
}
@model MEDONET.Models.CreateOrderVM
<div class="modal-dialog modal-sm">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title text-center">Order To Line</h4>
</div>
<div class="modal-body">
@using (Html.BeginForm("CreateOrder", "Doctors", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(m => m.DoctorId)
<div class="row text-center">
<p>Date & Time</p>
@Html.Label("Year")
@Html.EditorFor(model => model.Year, new { htmlAttributes = new { @class = "form-control", @Value = DateTime.Now.Year } })<br />
@Html.Label("Month")
@Html.EditorFor(model => model.Month, new { htmlAttributes = new { @class = "form-control", @Value = DateTime.Now.Month } })<br />
@Html.Label("Day")
@Html.EditorFor(model => model.Day, new { htmlAttributes = new { @class = "form-control", @Value = DateTime.Now.Day } })<br />
@Html.Label("Hour")
@Html.EditorFor(model => model.Hour, new { htmlAttributes = new { @class = "form-control", @Value = DateTime.Now.Hour } })<br />
@Html.Label("Minute")
@Html.EditorFor(model => model.Minute, new { htmlAttributes = new { @class = "form-control" } })<br />
@if (this.User.IsInRole("Registrator"))
{
@Html.EditorFor(model => model.PhoneNumber, new { htmlAttributes = new { @class = "form-control" } })<br />
}
<button type="submit" class="btn btn-default">Submit</button>
</div>
}
</div>
<div class="modal-footer">
</div>
</div>
但是!弹出字段仍然是第一次填充父页面加载时给出的。
每次按订单按钮时,我该如何给用户新的时间?
剃须刀代码仅在第一次加载时仅执行一次。之后,每次切换模态弹出窗口时,它都会显示/隐藏相同的HTML。单击按钮打开模式后,解决方案将是更新HTML。您可以使用jQuery的load()
方法来实现此目的。
首先,您需要使用JavaScript来切换模态而不是HTML。修改您的按钮如下
<a class="btn btn-primary" id="openModal">@MEDONET.Language.Doctor.Texts.Order</a>
在JavaScript中,为此按钮添加事件处理程序,如下面的
$('#openModal').on('click', function() {
...
})
然后,加载儿童动作的内容。
$('#openModal').on('click', function() {
$("#OrderModal").load("@Url.Action("CreateOrderForm", "ControllerName")", function() {
$('#OrderModal').modal('show')
});
})
我尚未测试过上述代码,它可能需要很少的错别字校正。让我知道,如果它不起作用。
我猜想该方法使用某种帖子,而不是返回新表单。在这种情况下,当您返回相同的视图时,模型状态是填充这些字段的状态。为了解决该动作
的添加ModelState.Clear();
或
ModelState.Remove("myChangeValue");
您可以在https://blogs.msdn.microsoft.com/simonince/simonince/2010/05/05/asp-net-mvcs-html-helpers-helpers-nelpers-the-wrong-value/
如果您只想更改模式中的时间,我建议您在显示模式时使用JavaScript更改。
$('#OrderModal #Minute').val(new Data().getMinutes());