参考Razor中的当前HTML元素?

时间:2013-09-03 14:13:24

标签: asp.net-mvc razor

在Razor(MVC 4)中,我可以执行类似以下(伪)代码的操作吗?

<div id="One" @if(THIS_ID_IS("One")) {WRITE_SOMETHING_HERE} ></div>
<div id="Two" @if(THIS_ID_IS("One")) {WRITE_SOMETHING_HERE} ></div>

我的意图是,在DIV“One”中会写一个额外的属性,但不会写入DIV“Two”

所以,THIS_ID_IS(字符串id)应该确定,如果Razor-Parse是INSIDE给定的DIV,id =“xyz”

这可能吗?

4 个答案:

答案 0 :(得分:1)

您可以使用单行if语句来克服这种情况

<div id="One" @(THIS_ID_IS("One") ? "write something" : "") ></div>

答案 1 :(得分:0)

由于idsunique值。所有div都有不同的ID 所以我认为剃刀中没有必要进行条件检查。

您可以直接将额外属性添加到Div,如下所示

<div id="One" attribute-name="Value"></div>

答案 2 :(得分:0)

在这种情况下,我倾向于编写一个帮助方法来输出标记。这样你就不会受到剃刀“规则”的限制。我在div中输出jQuery slider html做了类似的事情。

这也取决于你的目标受众,我很少提供实际的观点,因为我们的设计师完成了大部分工作。我不喜欢将内容移交给需要他们编写/理解逻辑的“广告素材”。

它可能不是理想的解决方案,甚至可能在你的情况下有点过分,但可能值得一看。

http://www.asp.net/mvc/tutorials/older-versions/views/creating-custom-html-helpers-cs

答案 3 :(得分:0)

尽可能多的我可能。看起来情况并非如此。

基于这两篇文章:

似乎Razor引擎结合了代码和标记解析器。 主解析器决定使用其中一个。 所以解析器彼此不了解。

简单地说,在您的示例中,<div id="One"></div>@if(THIS_ID_IS("One"))将在不同的范围内进行解析,然后将它们连接在一起。