Я задал вопрос и получил отличный ответ для своей конкретной проблемы, но столкнулся с проблемой со списками <select>
, используя <label>
и пытаясь присвоить атрибуту DataAnnotation [Display(Name="Text")]
что-то вроде [Display(Name="Text <span class=\"myclass\">Special styled text</span>.")]
.
Вот ссылка Вопрос / Ответ .
В ответе рассказывается о кодировке Html и представлено решение для помощника Html.LabelFor
. Это сработало идеально для моей непосредственной ситуации. Однако позже я обнаружил, что, поскольку я использую код для создания списков <select>
, новый помощник не выбирается им. Любая помощь очень ценится. Вот код <select>
, который я использую:
public MvcHtmlString BuildInput(string fieldName,
SelectListItem item, string inputType)
{
var id = ViewData.TemplateInfo.GetFullHtmlFieldId(item.Value);
var wrapper = new TagBuilder("div");
wrapper.AddCssClass("selector-item");
var input = new TagBuilder("input");
input.MergeAttribute("type", inputType);
input.MergeAttribute("name", fieldName);
input.MergeAttribute("value", item.Value);
input.MergeAttribute("id", id);
input.MergeAttributes(Html.GetUnobtrusiveValidationAttributes
(fieldName, ViewData.ModelMetadata));
if(item.Selected)
input.MergeAttribute("checked", "checked");
wrapper.InnerHtml += input.ToString(TagRenderMode.SelfClosing);
var label = new TagBuilder("label"); // tried merging code around
// here but got it all wrong
label.MergeAttribute("for", id);
label.SetInnerText(item.Text);
wrapper.InnerHtml += label;
return new MvcHtmlString(wrapper.ToString());
}
Как я указал в коде, я пытался объединить вспомогательный код, но не смог сделать его правильно.
Опять же, любая помощь приветствуется.