2016-08-09 35 views
0

Ich bin neu zu Knockout MVC und ich versuche, eine <img /> anzuzeigen, wenn das ausgewählte Datum ein Samstag oder Sonntag ist. Ich möchte, dass es angezeigt wird, sobald ich den Wert ändere (No form submit).Anzeige HTML dynamisch mit Knockout MVC mit ko.Wenn Nullable Datetime

Mein Versuch wurde unter Verwendung "mit (ko.If (...))":

MODEL

public class TestModel 
{ 
    public DateTime? Date { get; set; } 
    public bool Weekend 
    { 
     get 
     { 
      if (Date.HasValue) 
      { 
       return Date.Value.DayOfWeek == DayOfWeek.Saturday || Date.Value.DayOfWeek == DayOfWeek.Sunday; 
      } 

      return false; 
     } 
    } 
} 

CSHTML

@using PerpetuumSoft.Knockout 
@model MyApp.TestModel 
@{ 
    var ko = Html.CreateKnockoutContext(); 
} 

...

@ko.Html.TextBox(x => x.Date, new { class="datefield" }) 
using(ko.If(x => x.Date.Value.DayOfWeek == DayOfWeek.Saturday || x.Date.Value.DayOfWeek == DayOfWeek.Sunday)) 
{ 
    <img src="~/Images/warning-icon.png" width="22" height="22" title="Warning, it's the weekend." /> 
} 

...

<script type="text/javascript" > 
$(document).ready(function() { 
    $(".datefield").datepicker({ dateFormat: 'd M yy', changeYear: true }); 
}); 
</script> 
@ko.Apply(Model) 

ich mit diesem Ansatz versucht, aber es sagt, dass es nicht wegen der „Value()“ Bindung analysieren kann. Ich habe es geschafft, es mit einer CheckBox mit einem bool und einem TextBox mit einer Zeichenfolge Bedingung arbeiten ... aber nicht mit einer Datetime.

Hoffe ich bin klar über mein Problem.

Vielen Dank im Voraus für jede Hilfe.

Q.

Antwort

0

Nun, gab ich es auf, Knockout MVC mit Datetime (Adaequat mit String und Bool) zu verwenden.

Ich benutzte jQuery, um den Block anzuzeigen, den ich wollte. Setzen Sie einfach eine ID auf meine img (warningWeekend) und ändern Sie das Datepicker-Skript