2011-07-12 68 views
0

我想基於像在我看來,頁面有些布爾值來設置該屬性:設置在ASP.Net MVC3屬性

  @{ 
       object displayMode = (Model.PostCodeEnabled) ? null : new { disabled = "disabled", style = "width:200px;" }; 
       @Html.TextBox("PostalCode", "", displayMode) 
      } 

上面的代碼工作正常,但如果我想申請寬度爲200px在這兩種情況下,然後將下面的代碼不工作:

  @{ 
       object displayMode = (Model.PostCodeEnabled) ? new { style = "width:200px;" }: new { disabled = "disabled", style = "width:200px;" }; 
       @Html.TextBox("PostalCode", "", displayMode) 
      } 

另外我米有點混亂時即之間新的{禁用=「禁用」} &新{差的屬性之前追加@符號@ disabled =「disabled」}。

回答

0

問題不在於@符號 - 你的問題是你不能在兩個匿名類型之間進行隱式類型轉換。

這意味着,你需要做一個「適當的」 if語句,就像這樣:

@{ 
    object displayMode = new { @disabled = "disabled", @style = "width:200px;" }; 

    if (Model.PostCodeEnabled) 
    { 
     displayMode = new { @style = "width:200px;" }; 
    } 

    @Html.TextBox("PostalCode", "", displayMode) 
} 

讓我們再回到@符號 - 你總是需要包括它創建一個匿名類型,使用時HTML屬性。

+0

對不起,上面的代碼也不起作用。至少可以讓我知道在新的{disabled =「disabled」}和new {@disabled =「disabled」}之間的區別屬性之前追加@符號的時間。 – Biki

+1

我更新了我的答案。現在應該工作。 – MartinHN

+0

非常真實的馬丁。當我使用適當的if語句時,它開始工作。我仍然不確定@部分。至於我如果我把樣式屬性之前@,它不工作。但是,在上面的代碼中使用了@。我猜樣式不是匿名類型? – Biki