在我的項目中,我要求根據特定條件的某些字段應該可編輯或只讀。在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 *@