每次用户按下“订购”按钮时,我都会尝试在模态对话框中获取实际时间。
<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>
调用CreateOrderForm操作
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>
BUT!在父页面加载时,弹出字段仍然是第一次填充。
每次按下“订购”按钮时,如何为用户提供新的时间?
答案 0 :(得分:0)
当页面第一次加载时,Razor代码只执行一次。之后,每次切换模态弹出窗口时,它只显示/隐藏相同的HTML。一旦单击按钮打开模态,解决方案就是更新HTML。您可以使用JQuery的load()
方法来实现此目的。
首先,您需要使用JavaScript来切换Modal而不是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')
});
})
我还没有测试过上面的代码,可能需要很少的拼写错误修正。如果它不起作用,请告诉我。
答案 1 :(得分:0)
我猜这个方法使用某种帖子而不是返回新表格。 在这种情况下,当您返回相同视图时,模型状态就是填充这些字段的状态。为了解决它,添加动作
ModelState.Clear();
或者
ModelState.Remove("myChangeValue");
中查找更多信息
如果您只想更改模态中的时间,我建议您在显示模态时使用javascript更改它。
$('#OrderModal #Minute').val(new Data().getMinutes());