我已经确定了一些需要一些简单逻辑的视图,例如将一个类添加到使用@Html帮助器创建的一组控件中。我尝试了几种不同的方法,但是他们要么在视图中抛出错误,要么就是不工作。
一个简单的例子:
分配变量:
@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
条件,但我有其他轻量级逻辑用于使用变量。我的问题可能更多的是如何以这种方式使用变量而不是实际分配它?
答案 0 :(得分:4)
看起来你真的很了解剃刀。 您的代码的问题似乎是您使用的变量超出了范围。你不能在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
作为旁注,(在我看来)最好在控制器中做一些事情,而不是视图。但如果事情在意见中更有意义,那就把它们放在那里。 ( - :
希望这有帮助。
答案 1 :(得分:4)
试试这个;
@{
var disabled = string.Empty;
if (true)
{
disabled = "disabled";
}
}
@Html.CheckBoxFor(m => m.RememberMe, new { @class = "form-control " + disabled })
谢谢!