В моем проекте есть требование, чтобы определенные поля, зависящие от определенного условия, были доступны для редактирования или только для чтения.
Так что я решил, что делать это для каждого поля было излишним
@if (Model.CanEdit)
{
@Html.TextBoxFor(model => Model.Foo, new { width = "100px" })
}
else
{
@Html.TextBox(model => Model.Foo, new { width = "100px", @readonly = "readonly"})
}
Я решил использовать шаблон редактора, но потом понял, что ширину нельзя исправить, поэтому мне было интересно, как лучше всего отправить параметры в шаблон редактора?Также он должен обрабатывать сценарий, что ширина не может быть определена и не использовать свойство ширины вообще.Я обнаружил, что ViewData может помочь с этим, но наличие кода, который выглядит так, заставляет меня чувствовать, что я делаю что-то не так.
@inherits System.Web.Mvc.WebViewPage<string>
@if (Model.CanEdit)
{
@if(ViewData["width"] == null)
{
@Html.TextBox("", Model, new { width = ViewData["width"].ToString() })
}
else
{
@Html.TextBox("", Model)
}
}
else
{
@if(ViewData["width"] == null)
{
@Html.TextBox("", Model, new { width = ViewData["width"].ToString() , @readonly = "readonly"})
}
else
{
@Html.TextBox("", Model, new {@readonly = "readonly"})
}
}
Интересно, может ли быть способ создать помощника, чтобы яможет сделать что-то вроде:
@MyTextBoxFor(model => Model.Foo, true) @* true would be or readonly *@
@MyTextBoxFor(model => Model.Foo, true, 100) @* 100 would be the width length *@