2014-05-06 34 views
0

我想在MVC4中预约页面。它运行良好,但我想禁用所选的日期。这里是我的控制器预约:如何禁用选定日期(asp.net 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"); 
     } 
     // 
    } 
} 

,这里是我和日期选择器视图

@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

不知道这是否是你想要的'@ Html.TextBoxFor(U => u.Date,htmlAttributes:新{ID = “的DatePicker”,禁用= “真正的”})' – Kunukn

+0

@Kunukn:' readonly = true'在这里可能更合适。更好的可读性,价值仍然与表单一起提交。 – Flater

+1

@Flater只读是一个保留关键字,所以它是@ readonly = true :) – Kunukn

回答

0
@Html.TextBoxFor(u => u.Date, htmlAttributes: new { id = "DatePicker", disabled="disabled" }) 

@Html.TextBoxFor(u => u.Date, htmlAttributes: new { id = "DatePicker", @readonly="true" }) 
+0

@ Html.TextBoxFor(u => u.Date,htmlAttributes:new {id =“DatePicker”,@ readonly =“true”}) ... I使用这一个。我选择22月5日,并创建约会时,我去约会第22页可能没有禁用? – user1953051

+0

对于你的情况,你应该使用'disabled =“disabled”'。只读只会使文本只读,但datepicker事件仍然有效,并且可以更改日期。使用'disabled =“disabled”'让我知道它是否有效。 – Yasser

0

请尝试在JavaScript代码.. 希望对你有所帮助..

<script type="text/javascript"> 
    $(function() { 
     $("#DatePicker").datepicker(); 

     $("#DatePicker").attr('disabled','disabled') 

    }); 

</script> 

这上面是禁用所有的日期选择器,其ID:#DatePicker您的评论后 因此,更新代码:

$('#DatePicker').datepicker({ 
    beforeShowDay: function (dt) { 
     var bDisable = arrayDisabledDates[dt]; 
     if (bDisable) 
      return [false, '', '']; 
     else 
      return [true, '', '']; 
    } 
}); 

和arrayDisabledDates是日期的数组

VAR arrayDisabledDates = [.. 。,...,..]

+0

好吧,我想我解释它wrong.This代码禁用了我所有的datepicker.I想做一个验证,不再选择选定的一天每一天每个约会。所以首先,所有的日期应该是可用的,但当有人点击6月15日只是一个例子),并得到约会。没有人可以再次选择15月6日。我想我应该使用与我的数据库连接的代码,因为我在我的数据库中保留约会日期。 – user1953051

+0

但我在哪里可以添加我的连接到数据库来检查该日期是否已被选中? – user1953051

1

对我来说你的TextBoxFor对于“日期”可能是禁用的,取决于条件。 你可以试试这个。

@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> 
+0

但我在哪里可以添加我的连接到数据库来检查是否已选择该日期? – user1953051

+0

在这种情况下,如果条件可能是像(Model.Date> DateTime.MinValue)或类似的东西 – Najib

相关问题