Как остановить помощника HTML от кодирования атрибута значения элемента HTML?
У меня есть этот элемент ввода, который отлично работает с шаблонами подчеркивания.
<input id="color" name="color" value="<%= color %>" />
Я хочу использовать Html.Helper
метод для создания элемента вместо.
Я изначально попробовал только основной помощник
@Html.TextBox("color", "<%= color %>")
Но это дает мне
<input id="color" name="color" type="text" value="<%= color %>" />
Я попытался обернуть атрибут значения Html.Raw
но это дает тот же результат, и обертывание всего помощника приводит к тому же самому.
Весь блок завернут в <script type="text/template">
тег.
Почему это преобразование <
в <
и как мне это остановить?
Это работает, но немного грязно
@MvcHtmlString.Create(Html.TextBox("color", "<%= color %>").ToString().Replace("<", "<"))
1 ответ
Если вы пытаетесь использовать цвет, предоставленный из кода, не лучше ли поместить свойство Color в модель, связанную с представлением? Тогда вы можете использовать:
public class MyModel
{
public string ColorField {get;set;} //not sure whether you wanted string color or hex color here. CHange it as necessary
//also add whatever else you need the UI to bind to
}
В вашем контроллере при настройке модели вы должны указать значение по умолчанию:
public ViewResult MyViewName()
{
MyModel model = new MyModel { ColorField = "blue"; // or hex color / etc.}
//add other initialization here
return View(model);
}
тогда на ваш взгляд
@model MyModel
@Html.TextBoxFor(model=>model.ColorField, "color")
Мне кажется, что вы смешиваете традиционный синтаксис ASP.NET с синтаксисом Razor, но я не использовал синтаксис ASP.NET с MVC, поэтому я могу ошибаться, я хотел отойти от старого.
Независимо от того, как я описал выше, я всегда помещаю значения по умолчанию в поля формы, и это прекрасно работает.