在不使用类的情况下为Razor中的html元素赋予id

时间:2013-10-15 15:41:43

标签: razor

@if (Model.Something != null)  
{ 
<span id="SpanID">Model.SomethingElse</span> 
}  
else  
{
<span id="SpanID">Model.SomethingElse2</span>
}

我收到错误。此页面上的另一个对象已使用ID“SpanID”。 我想通过仅使用ID(而不是使用类)来实现这一点,因为许多其他事情依赖于此。

2 个答案:

答案 0 :(得分:3)

声明一个变量并在你的范围内使用它。

@{
    var result = Model.Something != null ? 
        Model.SomethingElse : Model.SomethingElse2;
}

<span id="SpanID">@result</span>

Alex提到最好的方法是将此逻辑移动到控制器并仅使用视图所需的数据填充ViewModel。这也使您的代码更具可测试性。

答案 1 :(得分:1)

你可以改写它:

@{
    if (Model.Something != null) {
        ViewData["whatever"] = Model.SomethingElse;
    }
    else {
        ViewData["whatever"] = Model.SomethingElse2;
    }
}

<span id="SpanID">@ViewData["whatever"]</span> 

或者使用ViewModel,将支票从View移动到Controller(它所属的位置,也可以是)。