Я пытаюсь использовать этот объект item.isRequired, чтобы установить HtmlAttributes по мере необходимости, но он не работает. Он отлично работает, когда я использую строковое значение в HtmlAttributes, но не когда я использую строку htmlAttributesData.
var htmlAttributesData = item.isRequired ? "new { required = 'required', data_val_required = 'Question is Required' }" : "";
@(Html.Kendo().RadioGroupFor(m => m.MeetingPollingQuestions)
.Name(string.Format("PollingResponses[{0}].Value", idx))
.HtmlAttributes(htmlAttributesData)
.Items(i =>
{
foreach (var option in @item.RadioButtonList)
i.Add().Label(option.Label).Value(option.Value);
}
)
.Value("Value")
);
Код Html.Kendo(), завернутый в @(), обрабатывается на сервере для создания javascript перед отправкой страницы в браузер. Когда сервер делает это, htmlAttributesData не существует, потому что, насколько я могу судить, это код javascript. Сервер не выполняет никакой логики javascript, он просто отправляет ее в браузер.
Два варианта:
Не используйте оболочку сервера Html.Kendo, а вместо этого используйте синтаксис плагина запроса, чтобы объявить радиогруппу с помощью javascript. Это будет обработано в браузере, где вы сможете затем использовать htmlAttributesData для его настройки, потому что в этот момент он будет существовать.
Объявите htmlAttributesData с помощью кода сервера. Может быть, что-то вроде:
.HtmlAttributes(@item.isRequired ? new { required = 'обязательно', data_val_required = 'Требуется вопрос' } : null)
Да, я пробовал это, но он не установил html
required
илиdata-val-required
. Я также пытался добавить его из модели