相关疑难解决方法(0)

如何在剃刀中使用三元运算符(特别是在HTML属性上)?

使用WebForms视图引擎,我通常会使用三元运算符来处理非常简单的条件,特别是在HTML属性中.例如:

<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
Run Code Online (Sandbox Code Playgroud)

上面的代码将为<a>标记提供一个类authanon取决于用户是否经过身份验证.

Razor视图引擎的等效语法是什么?因为Razor需要HTML标签来"知道"何时跳入和跳出代码和标记,所以我现在仍然坚持以下内容:

@if(User.Identity.IsAuthenticated)  { <a class="auth">My link here</a> }
else { <a class="anon">My link here</a> }
Run Code Online (Sandbox Code Playgroud)

温和地说,这很可怕.

我很想做一些喜欢这一点,但我在努力了解如何在剃刀:

<a class="@=User.Identity.IsAuthenticated ? "auth" : "anon";">My link here</a>
Run Code Online (Sandbox Code Playgroud)

-

更新:

与此同时,我创建了这个HtmlHelper:

public static MvcHtmlString Conditional(this HtmlHelper html, Boolean condition, String ifTrue, String ifFalse)
{
  return MvcHtmlString.Create(condition ? ifTrue : ifFalse);
}
Run Code Online (Sandbox Code Playgroud)

这可以从Razor这样调用:

<a class="@Html.Conditional(User.Identity.IsAuthenticated, "auth", "anon")">My link here</a>
Run Code Online (Sandbox Code Playgroud)

尽管如此,我希望有一种方法可以使用三元运算符而不会退回到扩展方法中.

razor asp.net-mvc-3

387
推荐指数
5
解决办法
16万
查看次数

使用Razor MVC3的条件HTML属性

变量strCSSClass通常具有值,但有时为空.

我不想在这个输入元素的HTML中包含一个空的class ="",这意味着如果strCSSClass为空,我根本不需要class =属性.

以下是执行条件HTML属性的一种方法:

<input type="text" id="@strElementID" @(CSSClass.IsEmpty() ? "" : "class=" + strCSSClass) />
Run Code Online (Sandbox Code Playgroud)

有更优雅的方式吗?特别是我可以遵循与元素的其他部分使用相同的语法:class ="@ strCSSClass"?

html razor asp.net-mvc-3

96
推荐指数
3
解决办法
12万
查看次数

标签 统计

asp.net-mvc-3 ×2

razor ×2

html ×1