如何在MVC Razor View中分配和使用变量

时间:2014-07-05 03:24:31

标签: asp.net-mvc razor

我已经确定了一些需要一些简单逻辑的视图,例如将一个类添加到使用@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条件,但我有其他轻量级逻辑用于使用变量。我的问题可能更多的是如何以这种方式使用变量而不是实际分配它?

2 个答案:

答案 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 })

谢谢!