2

私は奇妙な問題に直面しています。現在、カスタマイズされた Date Picker と DateTime Picker を使用しています。最初のものは正しく機能しています (データがバインドされています)、2 番目のものはそうではありません (何もバインドされていません)。

日付ピッカー ヘルパー拡張機能:

public static MvcHtmlString BootstrapDatePickerFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes = null)
{
    var className = "pickADate";
    const string format = "{0:dd/MM/yyyy}";
    const string dataFormat = "dd/MM/yyyy";

    var dict = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
    dict["class"] = dict.ContainsKey("class") ? dict["class"] + " " + "form-control" : "form-control";

    if (dict.ContainsKey("disabled"))
    {
        className = "";
    }

    var input = helper.TextBoxFor(expression, format, dict);
    const string span = "<span class=\"input-group-addon\"><span class=\"glyphicon glyphicon-calendar\"></span></span>";
    var div = string.Format("<div data-format=\"{0}\" class=\"input-group date {1}\">", dataFormat, className);
    return new MvcHtmlString(div + input.ToHtmlString() + span + "</div>");
} 

を使用した日付ピッカー html:

using (Html.FormGroupFor(x => x.StartDate, new { ng_class = "{'has-error': !form.StartDate.$valid}" }))
{
    @Html.LabelFor(x => x.StartDate, new { @class = "control-label" })
    @Html.BootstrapDatePickerFor(x => x.StartDate, new { @class = "form-control", @ng_required = "task.Recurrence != 'None'", @ng_model = "task.StartDate" })
}

したがって、この部分は機能しています... task.StartDate は値を返し、検証は機能しています。

現在、ほぼ同じ DateTime ピッカー:

DateTime ピッカー ヘルパー拡張機能:

public static MvcHtmlString BootstrapDateTimePickerFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes = null)
{
    var className = "pickADateTime";
    var format = "{0:dd/MM/yyyy HH:mm}";
    var dataFormat = "dd/MM/yyyy hh:mm";

    var dict = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
    dict["class"] = dict.ContainsKey("class") ? dict["class"] + " " + "form-control" : "form-control";

    if (dict.ContainsKey("disabled"))
    {
        className = "";
    }

    var input = helper.TextBoxFor(expression, format, dict);
    const string span = "<span class='input-group-addon'><span class='glyphicon glyphicon-calendar'></span></span>";
    var div = string.Format("<div data-format='{0}' class='input-group date {1}'>", dataFormat, className);
    return new MvcHtmlString(div + input.ToHtmlString() + span + "</div>");
}

を使用したDateTimeピッカーhtml:

using (Html.FormGroupFor(x => x.StartDate, new { ng_class = "{'has-error': !form.StartDate.$valid}" }))
{
    @Html.LabelFor(x => x.StartDate, new { @class = "control-label" })
    @Html.BootstrapDateTimePickerFor(x => x.StartDate, new { @class = "form-control", @ng_required = "meeting.Recurrence != 'None'", @ng_model = "meeting.StartDate" })
}
<p>meeting Start Date {{meeting.StartDate}}</p>

視覚的な結果:

ここに画像の説明を入力

ご覧のとおり、{{meeting.StartDate}} は何も返しません。私は多くのことを試しましたが、日付ピッカーで作業している間、ピッキングがバインディングを発射していないようです。変...

4

0 に答える 0