2013-01-18 68 views
1

我有我將添加兩個屬性的場景。將靜態和動態屬性傳遞給MVC3中的htmlAttribute

一個是動態即基於用戶角色&另一個只讀是靜態的即ID

我想這以下,但它不是爲我工作。

以HTML格式呈現爲下面的屬性是

readonlystr =,ID = 'EMP名'

var readonlystr = (Model.Role.EmpEdit) ? "" : "readonly=readonly"; 

@Html.TextBoxFor(m => m.Name, new { readonlystr, @id = "emp-name" }) 
@Html.TextBoxFor(m => m.Age, new { readonlystr, @id = "emp-age" }) 
@Html.TextBoxFor(m => m.City, new { readonlystr, @id = "emp-city" }) 

任何建議通過組合兩個屬性和通來實現這一它?

回答

1
var readonlystr = Model.Role.EmpEdit ? new Dictionary<string, object>() : new Dictionary<string, object> { { "readonly", "readonly" } }; 

@Html.TextBoxFor(m => m.Name, readonlystr.Union(new Dictionary<string, object>{{"id", "emp-name"}}).ToDictionary(x=>x.Key, x=>x.Value)) 
0
@{ 
     Dictionary<string, object> attribs = new Dictionary<string, object>(); 
     if (!Model.Role.EmpEdit) { 
      attribs.Add("readonly", "readonly"); 
     } 
     attribs.Add("id", ""); 
    } 

    @{attribs["id"] = "emp-name";} 
    @Html.TextBoxFor(m => m.Name, attribs) 
    @{attribs["id"] = "emp-age";} 
    @Html.TextBoxFor(m => m.Age, attribs)