在我的项目中,我要求根据特定条件的某些字段应该可编辑或只读。在MVC 3中创建自定义用户界面元素
所以我虽然,这样做的每一个领域是矫枉过正
@if (Model.CanEdit)
{
@Html.TextBoxFor(model => Model.Foo, new { width = "100px" })
}
else
{
@Html.TextBox(model => Model.Foo, new { width = "100px", @readonly = "readonly"})
}
我决定用一个编辑模板,但后来我意识到,宽度不能是固定的,所以我想知道什么是最好的方式将参数发送到编辑器模板?它也应该处理宽度可能没有定义的情况,并且根本不使用width属性。我发现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 *@