asp.netコアの条件に基づいてhtmlタグをレンダリングする
1757 ワード
ASP.NET CORE
に基づくアプリケーションで Razor を使用している場合、何かを確認し、それに従って HTML
タグを生成し、クライアントに表示したい場合があります.たとえば、一般的なことの 1 つは、ユーザーがログインしているかどうかを確認するときです.ユーザーがログインしていない場合は [ログイン] ボタンを表示し、それ以外の場合は Sign-out
ボタンを表示します.これを達成するために、次のようなコードになります.
if (User.Identity.IsAuthenticated)
{
<a href="/Account/Signout">SignOut</a>
}
else {
<a href="/Account/SignIn">SignIn</a>
}
これは問題なく、私たちが望むことを行いますが、もっとクリーンだと思う方法がもう 1 つあります.それは
Tag Helper
を使用することです.カスタム タグ ヘルパーを実装した後、コードをリファクタリングして、以下のように HTML タグをレンダリングできます.
<a href="/Account/Signout" condition=="@User.Identity.IsAuthenticated">SignOut</a>
上記のように、
if
ステートメントはなく、condition
タグで HTML
を使用し、それに boolean
値を渡しただけです.Condition
タグ ヘルパーの実装は次のとおりです.
using Microsoft.AspNetCore.Razor.TagHelpers;
namespace CustomTagHelpers.TagHelpers
{
[HtmlTargetElement(Attributes = nameof(Condition))]
public class ConditionTagHelper : TagHelper
{
public bool Condition { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
if (!Condition)
{
output.SuppressOutput();
}
}
}
}
この
tag helpe
をすべての views
で使用できるようにするには、その namespace
を _ViewImports.cshtml
に追加します.Condition tag helper renders output when passed a true value.
Reference
この問題について(asp.netコアの条件に基づいてhtmlタグをレンダリングする), 我々は、より多くの情報をここで見つけました https://dev.to/uthmanrahimi/render-html-tags-based-on-condition-in-aspnet-core-4chmテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol