Для привязки модели Razor используется функция javascript - PullRequest
1 голос
/ 19 февраля 2020

У меня есть следующая привязка модели в представлении reazor .cs html

@Html.TextBoxFor(m => m.cDate,
    new{
        @id = "textd",
        @type = "text"
    }
)

Я хочу вызвать функцию javascript перед привязкой, как показано ниже

@Html.TextBoxFor(m => updatedateFormat(m.cDate),
    new{
        @id = "textd",
        @type = "text"
    }
)

updatedateFormat - это функция javascript.

У меня есть много вариантов работы только с c#, но мне интересно знать, можем ли мы использовать функцию javascript с привязкой к модели.

Я пробовал, как показано ниже

@{
  string ccDate= @Convert.ToString("updatedateFormat(@Model.cDate)");
}
@Html.TextBoxFor(m => ccDate,
new

Но не работает

Пожалуйста, сообщите. Спасибо

1 Ответ

0 голосов
/ 19 февраля 2020

Поскольку невозможно вызвать функцию Javascript, когда отображается элемент ввода или любой другой элемент html, вы можете использовать событие document.ready, чтобы достичь желаемого:

@Html.TextBoxFor(m =>m.cDate,
    new{
        @id = "textd",
        @type = "text",
    }
)

И когда документ готов:

$(document).ready(function () {
    var ccDate= document.getElementById('textd');
    updatedateFormat(ccDate);
})

Или вы можете добавить пользовательский атрибут, такой как data-onload, для имитации события при загрузке:

@Html.TextBoxFor(m => m.cDate,
    new{
        @id = "textd",
        @type = "text",
        data_onload="updatedateFormat('@Model.cDate')"
    }
)

И когда документ готов:

$(document).ready(function () {
    $('[data-onload]').each(function(){
    eval($(this).data('onload'));
  });
})

Если вы хотите отформатировать только значение вашего свойства, вы можете сделать это с помощью функции ToString() внутри HTML помощника:

@Html.TextBoxFor(m =>m.cDate,
    new{
        @id = "textd",
        @type = "text",
        @Value = Model.cDate.ToString("yyyy/MM/dd")
    }
)
...