2014-07-05 53 views
2

我已經確定了幾個需要一些簡單邏輯的視圖,例如將一個類添加到使用@Html助手創建的一組控件中。我嘗試了幾種不同的方式,但它們要麼在視圖中拋出錯誤,要麼就是不起作用。如何在MVC中分配和使用變量Razor查看

一個簡單的例子:

分配變量:

@if(condition) 
{ 
    var _disabled = "disabled"; 
} 

@Html.CheckBoxFor(m => m.Test, new { @class = "form-control " + @_disabled }) 

或者:

@if(condition) 
{ 
    var _checked = "checked"; 
} 

@Html.CheckBoxFor(m => m.Test, new { @checked = @_checked }) 

當然,這些不工作。我只是想在我的視圖中消除一堆@if條件,但我有其他輕量級邏輯用於使用變量。我的問題可能更多的是如何以這種方式使用變量而不是實際分配它?

回答

3

這似乎是你理解剃刀罰款。 你的代碼的問題似乎是你正在使用超出範圍的變量。你不能在if語句中定義一個變量,然後在外部使用它,因爲編譯器不能確定外部變量實際上是否存在。

我建議如下:

@{ 
var thing = "something";//variable defined outside of if block. you could just say String something; without initializing as well. 
    if(condition){ 
     thing = "something else"; 
    } 
} 
@Html.Raw(thing);//or whatever 

作爲一個方面說明,(在我看來)這是更好地做的東西在控制器時,就可以了,而不是意見。但如果事情在意見中更有意義,就把它們留在那裏。 ( - :

希望這有助於

+0

很高興我能幫助( - :! – Jack

3

試試這個;

@{ 
    var disabled = string.Empty; 
    if (true) 
    { 
     disabled = "disabled"; 
    } 
} 
@Html.CheckBoxFor(m => m.RememberMe, new { @class = "form-control " + disabled }) 

感謝

+0

Saranga,我知道你的答案是正確的,它可以幫助我謝謝,我現在看到了(至少在我的例子中),我在Jack指出的'if'塊中分配了變量,我不確定在實際測試時我是這樣做的,無論如何,thx – rwkiii

+0

我很高興,如果它幫助你rwkiii。 – Saranga

相關問題