使用ko使用Knockout MVC动态显示HTML.如果与空日期时间



我是Knockout MVC的新手,如果选择的日期是星期六或星期天,我试图显示<img />。我希望它在我改变值(No form submit)时立即显示。

我的尝试是使用"using(ko)"。如果(……))":

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)

我尝试过这种方法,但它说它不能解析绑定,因为"值()"。我设法使它与一个带有bool和一个带有字符串条件的文本框的复选框一起工作…但是不能用日期时间。

希望我清楚我的问题。

提前感谢您的帮助。

问:

嗯,我放弃了尝试使用Knockout MVC与DateTime (Works fine with String and Bool)。

我使用jQuery来显示我想要的块。只需在我的img上设置一个id (warningWeekend)并修改日期拾取器脚本

<script type="text/javascript" >
$('#warningWeekend').hide('fast');
    $(".datefield").datepicker({
        dateFormat: 'd M yy',
        changeYear: true,
        onSelect: function (dateText, inst) {
                var date = $(this).datepicker("getDate");
                    if (date.getDay() == 0 || date.getDay() == 6) {
                        $('#warningWeekend').show('fast');
                    }
                    else {
                        $('#warningWeekend').hide('fast');
                    }
        }
    });
</script>

最新更新