我正在尝试在MVC4中创建一个约会页面。它运作良好,但我想禁用所选的日期。这是我的控制器预约:
public ActionResult Make()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Make(Models.AppModel User)
{
if (Session["UserEmail"] != null)
{
using (var db = new MaindbModelDataContext())
{
var patient = db.Patients.FirstOrDefault(u => u.Email == (String)Session["UserEmail"]);
var app = new Appointment();
app.Date = (DateTime)User.Date;
app.Description = User.Description;
app.Status = "isPending";
app.PatientNo = patient.PatientNo;
app.AppNo = Guid.NewGuid().GetHashCode();
db.Appointments.InsertOnSubmit(app);
db.SubmitChanges();
}
}
else
{
return RedirectToAction("Index", "User");
}
return RedirectToAction("Index", "Patient");
}
//
}
}
这是我对datepicker的看法
@model DentAppSys.Models.AppModel
@{
ViewBag.Title = "Appointment";
}
<link type="text/css" rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken();
@Html.ValidationSummary(true, "");
<div>
<fieldset>
<legend>Get an Appointment</legend>
<div>@Html.LabelFor(u => u.Date)</div>
<div>
@Html.TextBoxFor(u => u.Date, htmlAttributes: new { id = "DatePicker" })
@Html.ValidationMessageFor(u => u.Date)
</div>
<div>@Html.LabelFor(u => u.Description)</div>
<div>
@Html.TextBoxFor(u => u.Description)
</div>
<input type="submit" value="Submit" class="footer_btn" />
</fieldset>
</div>
}
<script type="text/javascript">
$(function () {
$("#DatePicker").datepicker();
});
</script>
答案 0 :(得分:1)
在我看来你的TextBoxFor for“Date”可能会被禁用取决于条件。 你可以试试这个。
@using (Html.BeginForm())
{
@Html.AntiForgeryToken();
@Html.ValidationSummary(true, "");
<div>
<fieldset>
<legend>Get an Appointment</legend>
<div>@Html.LabelFor(u => u.Date)</div>
<div>
@{
string idAttr="";
if(condition_for_disable==true)
{
idAttr="DatePicker";
}
@Html.TextBoxFor(u => u.Date, htmlAttributes: new { id = idAttr })
} @Html.ValidationMessageFor(u => u.Date)
</div>
<div>@Html.LabelFor(u => u.Description)</div>
<div>
@Html.TextBoxFor(u => u.Description)
</div>
<input type="submit" value="Submit" class="footer_btn" />
</fieldset>
</div>
}
<script type="text/javascript">
$(function () {
$("#DatePicker").datepicker();
});
</script>
答案 1 :(得分:0)
@Html.TextBoxFor(u => u.Date, htmlAttributes: new { id = "DatePicker", disabled="disabled" })
或
@Html.TextBoxFor(u => u.Date, htmlAttributes: new { id = "DatePicker", @readonly="true" })
答案 2 :(得分:0)
请在JavaScript代码上试用.. 希望如此有帮助..
<script type="text/javascript">
$(function () {
$("#DatePicker").datepicker();
$("#DatePicker").attr('disabled','disabled')
});
</script>
以上是禁用id为:#DatePicker的所有datepicker 因此,请在评论后更新代码:
$('#DatePicker').datepicker({
beforeShowDay: function (dt) {
var bDisable = arrayDisabledDates[dt];
if (bDisable)
return [false, '', ''];
else
return [true, '', ''];
}
});
和arrayDisabledDates是日期数组
var arrayDisabledDates = [...,...,..]