.ネットチームのお気に入りの剃刀機能
かみそりは埋め込みのためのマークアップ構文です.WebページへのNETベースのコード.これは、剃刀のマークアップ、Cの経度、およびHTMLが含まれます.かみそりを含むファイルは一般的に.ファイルの拡張子.剃刀は、剃刀コンポーネントファイル(. razor)でも見つかります.
剃刀はあなたのマークアップに集中するので、軽量で控えめに設計されています.しかし、本当に便利な機能がたくさん隠されている!私は何人かの友人に聞いた.彼らのお気に入りの剃刀の機能のいくつかのためのネットチームは、ここで彼らが言っていたものです.
キャッシュタグヘルパー
閉じるこの動画はお気に入りから削除されています.それはとても簡単です!
陰的なかみそり式はasync -
これはあなたのCSHTMLから直接Cの当たり前のコードを呼び出すことができますコアレイザー機能です!
カスタムタグヘルパー
タグヘルパーは、サーバー側のコードを作成して、Mozorファイル内のHTML要素をレンダリングに参加できます.組み込みのものがたくさんありますが、とても簡単に書くこともできます.
以下に例を示します
DamianEdwards / TagHelperPack
ASP . NET用のタグ付きヘルパーのセットです.ネットコア
taghelperpack
ASP . NET用のタグ付きヘルパーのセットです.NETコア(すべてのバージョン).
含まれたタグヘルパーと例
例ページを参照くださいhttps://taghelperpack.net
サポートASP .NETコア2.1X , 2.2 .X , 3.0 .X、3.1.X
インストール パッケージにCMD行からリファレンスを追加します. 復元 あなたのアプリケーションのタグヘルパーを登録します View on GitHub
テンプレートコンポーネント
何かで
テンプレートコンポーネントは非常に便利です.これらは、1つ以上のUIテンプレートをパラメータとして受け入れるコンポーネントです.このコンポーネントは、コンポーネントのレンダリングロジックの一部として使用できます.テンプレートコンポーネントを使用すると、以前に可能であったよりも再利用可能な上位レベルのコンポーネントを作成できます.たとえば、リストビューのコンポーネントは、ユーザーがリスト内の項目をレンディングするためのテンプレートを指定することができます、またはグリッドコンポーネントは、ユーザーがグリッドヘッダーと各行のテンプレートを指定することができます.
ViewComponentTaghelpers -
ViewComponentを作成し、コンテンツ、ビュー、またはその他の複雑なロジックを返します.
インジェクト
以下に例を示します:
クラスライブラリ
私は剃刀コンポーネントライブラリが好きです.ちょっと書いてください.かみそりファイルと参照できるコンポーネントです.私はこれらをたくさん使ったBlazorWebFormsComponents プロジェクトは、.Blaveフォームをプロジェクトに適用します.
例を挙げる
FritzAndFriends / BlazorWebFormsComponents
ASPをエミュレートするブレザーコンポーネントのコレクションです.同じ名前のNet Webフォームコントロール
コンポーネント
同じ名前のWebフォームコンポーネントをエミュレートするブレザーコンポーネントのコレクション
Live Samples running on Azure
アプローチ+考慮
私たちは、よく維持されて、価値を提供しているウェブフォームアプリケーションが最小限の変更で新しいユーザーインターフェースフレームワークへの経路を持つべきであると信じています.これは、アプリケーションに変換されていませんまた、魔法のようにASPで動作するようにプロジェクトに適用することができますパッチです.ネットコア.このリポジトリには、あなたのマークアップの多くを再利用することができるライブラリと一連の戦略があります.
これは誰もが、誰もがアプリケーションを移行する必要はありません.彼らは非常に長い時間(この執筆の時点で2029 EOL)と移行のために考慮されるアプリケーションのためのWebフォームとしてサポートされ続けることができます.
View on GitHub
すべてを使用します.ネット機能
ここでは本当に便利な剃刀のスニペットです.これは私が剃刀の構文について愛していることの一つです、私は私の既存のCの言葉を使用するようになるだけでなく、私は生産的な開発者を作るすべての言語機能を使用することができます.
結果のHTML :
明示的移行
ほとんどの場合では、かみそりは、あなたがそれについて考える必要がないことなしで、C - CountとHTMLの間で暗黙のうちに変わります.時にはブロックをCの行のHTMLテキストインラインとして明示的に呼び出すことが便利です.明示的な移行を行うことができます.たとえば、CのCacheコードブロック内からJavaScriptまたはCSSを出力している場合に便利です.
あなたは
カミソリとかみそりページについて詳しく知る
カミソリやかみそりページについての詳細を知りたいですか?この2時間のイントロをチェックしてください:.
あなたはどうですか.
あなたが共有したいお気に入りのかみそり機能を得たか.コメントにドロップ!
剃刀はあなたのマークアップに集中するので、軽量で控えめに設計されています.しかし、本当に便利な機能がたくさん隠されている!私は何人かの友人に聞いた.彼らのお気に入りの剃刀の機能のいくつかのためのネットチームは、ここで彼らが言っていたものです.
キャッシュタグヘルパー
閉じるこの動画はお気に入りから削除されています.それはとても簡単です!
@page
@model ArchivesModel
<cache expires-after="@TimeSpan.FromHours(4)">
@foreach (var show in Model.Shows)
{
<a href="@show.AsAwesomeUrl()" class="showCard">
<img data-src="@("https://images.hanselminutes.com/podcast/shows/"
+ show.Number + ".jpg")"
loading="lazy" class="lazyload"
src="/images/grey.gif" width="212" height="212"
alt="@show.Title" />
<span class="shownumber">@show.Number</span>
<div class="overlay title">
<!-- cant add padding to the wrapping div or the layout gets
messed up, title will be wrapped in a p tag
which will have the padding added to it -->
<p class="overlay-text">@show.Title</p>
</div>
</a>
}
</cache>
Docs: Cache taghelper 陰的なかみそり式はasync -
これはあなたのCSHTMLから直接Cの当たり前のコードを呼び出すことができますコアレイザー機能です!
<p>@await DoSomethingAsync("Hello", "from", "async")</p>
Docs: Implicit Razor expressions カスタムタグヘルパー
タグヘルパーは、サーバー側のコードを作成して、Mozorファイル内のHTML要素をレンダリングに参加できます.組み込みのものがたくさんありますが、とても簡単に書くこともできます.
以下に例を示します
asp-if
指定した述語がfalseに等しい場合、要素の出力を抑制するタグヘルパー.[HtmlTargetElement("*", Attributes = "asp-if")]
public class IfTagHelper : TagHelper
{
/// <summary>
/// The predicate expression to test.
/// </summary>
[HtmlAttributeName("asp-if")]
public bool Predicate { get; set; }
public override void Process(TagHelperContext context,
TagHelperOutput output)
{
if (!Predicate)
{
output.SuppressOutput();
}
}
}
以下のようにします.<div asp-if="(DateTime.UtcNow.Minute % 2) == 0">
This paragraph will only render during <strong>even</strong> minutes.
</div>
<div asp-if="(DateTime.UtcNow.Minute % 2) == 1">
This paragraph will only render during <strong>odd</strong> minutes.
</div>
私は、多くのサンプルタグヘルパーをこれに書きましたTagHelper Pack Samples リポジトリ.DamianEdwards / TagHelperPack
ASP . NET用のタグ付きヘルパーのセットです.ネットコア
taghelperpack
ASP . NET用のタグ付きヘルパーのセットです.NETコア(すべてのバージョン).
含まれたタグヘルパーと例
例ページを参照くださいhttps://taghelperpack.net
サポートASP .NETコア2.1X , 2.2 .X , 3.0 .X、3.1.X
インストール
MyGreatProject> dotnet add package TagHelperPack
MyGreatProject> dotnet restore
_ViewImports.cshtml
ファイル@addTagHelper *, TagHelperPack
テンプレートコンポーネント
何かで
.razor
ファイルは芸術作品だ😍テンプレートコンポーネントは非常に便利です.これらは、1つ以上のUIテンプレートをパラメータとして受け入れるコンポーネントです.このコンポーネントは、コンポーネントのレンダリングロジックの一部として使用できます.テンプレートコンポーネントを使用すると、以前に可能であったよりも再利用可能な上位レベルのコンポーネントを作成できます.たとえば、リストビューのコンポーネントは、ユーザーがリスト内の項目をレンディングするためのテンプレートを指定することができます、またはグリッドコンポーネントは、ユーザーがグリッドヘッダーと各行のテンプレートを指定することができます.
<h1>Pets</h1>
<TableTemplate Items="pets" Context="pet">
<TableHeader>
<th>ID</th>
<th>Name</th>
</TableHeader>
<RowTemplate>
<td>@pet.PetId</td>
<td>@pet.Name</td>
</RowTemplate>
</TableTemplate>
@code {
private List<Pet> pets = new()
{
new Pet { PetId = 2, Name = "Mr. Bigglesworth" },
new Pet { PetId = 4, Name = "Salem Saberhagen" },
new Pet { PetId = 7, Name = "K-9" }
};
private class Pet
{
public int PetId { get; set; }
public string Name { get; set; }
}
}
Docs: Templated components ViewComponentTaghelpers -
ViewComponentを作成し、コンテンツ、ビュー、またはその他の複雑なロジックを返します.
using Microsoft.AspNetCore.Mvc;
namespace WebApplication3000
{
public class Foo: ViewComponent
{
public IViewComponentResult Invoke()
{
return Content("Hello, World!");
}
}
}
その後、即座にあなたのビューで利用できるTaghelpersに変換されます.@addTagHelper *, WebApplication3000
<vc:foo />
Docs: View Components インジェクト
@inject
is 🔥🔥🔥! 私は、私がそれをすることができるのが好きです-それは、ものすごいHawtShoesものすごいです.以下に例を示します:
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
@{
string myValue = Configuration["root:parent:child"];
...
}
サービスを注入することもできます.@using System.Threading.Tasks
@using ViewInjectSample.Model
@using ViewInjectSample.Model.Services
@model IEnumerable<ToDoItem>
@inject StatisticsService StatsService
<!DOCTYPE html>
<html>
<head>
<title>To Do Items</title>
</head>
<body>
<div>
<h1>To Do Items</h1>
<ul>
<li>Total Items: @StatsService.GetCount()</li>
<li>Completed: @StatsService.GetCompletedCount()</li>
<li>Avg. Priority: @StatsService.GetAveragePriority()</li>
</ul>
<table>
<tr>
<th>Name</th>
<th>Priority</th>
<th>Is Done?</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Name</td>
<td>@item.Priority</td>
<td>@item.IsDone</td>
</tr>
}
</table>
</div>
</body>
</html>
Docs: Dependency injection into views in ASP.NET Coreクラスライブラリ
私は剃刀コンポーネントライブラリが好きです.ちょっと書いてください.かみそりファイルと参照できるコンポーネントです.私はこれらをたくさん使ったBlazorWebFormsComponents プロジェクトは、.Blaveフォームをプロジェクトに適用します.
例を挙げる
Label
コンポーネントLabel.razor
:@inherits BaseWebFormsComponent
@if (Visible)
{
<span id="@ID">@Text</span>
}
論理はLabel.razor.cs
:using BlazorWebFormsComponents.Interfaces;
using Microsoft.AspNetCore.Components;
namespace BlazorWebFormsComponents
{
public partial class Label : BaseWebFormsComponent, ITextComponent
{
[Parameter]
public string Text { get; set; }
}
}
FritzAndFriends / BlazorWebFormsComponents
ASPをエミュレートするブレザーコンポーネントのコレクションです.同じ名前のNet Webフォームコントロール
コンポーネント
同じ名前のWebフォームコンポーネントをエミュレートするブレザーコンポーネントのコレクション
Live Samples running on Azure
アプローチ+考慮
私たちは、よく維持されて、価値を提供しているウェブフォームアプリケーションが最小限の変更で新しいユーザーインターフェースフレームワークへの経路を持つべきであると信じています.これは、アプリケーションに変換されていませんまた、魔法のようにASPで動作するようにプロジェクトに適用することができますパッチです.ネットコア.このリポジトリには、あなたのマークアップの多くを再利用することができるライブラリと一連の戦略があります.
これは誰もが、誰もがアプリケーションを移行する必要はありません.彼らは非常に長い時間(この執筆の時点で2029 EOL)と移行のために考慮されるアプリケーションのためのWebフォームとしてサポートされ続けることができます.
View on GitHub
すべてを使用します.ネット機能
ここでは本当に便利な剃刀のスニペットです.これは私が剃刀の構文について愛していることの一つです、私は私の既存のCの言葉を使用するようになるだけでなく、私は生産的な開発者を作るすべての言語機能を使用することができます.
@using static System.Runtime.InteropServices.RuntimeInformation
<div class="built-with">
@FrameworkDescription
</div>
あなたの目はあなたをだますことはありませんusing static
宣言-すべての静的メンバーのSystem.Runtime.InteropServices.RuntimeInformation
型は修飾子なしで利用可能です.私はシームレスにリッチなコンテンツを作成する強力なテンプレートエンジンを使用して、HTMLとCを一緒に噛み合わせることができます.これは簡単な例ですが、もっとたくさんあります.あなたはあなたの想像力とHTMLとCの残余の意味を囲む構成によって制限されています.これがHTMLとしてレンダリングされると、あなたは<div>
を含む要素.NET Frameworkの説明.私は、私のランタイム版を見るのが好きです.ネットアプリ💜.結果のHTML :
<div class="built-with">
.NET 6.0.0-preview.7.21377.19
</div>
明示的移行
ほとんどの場合では、かみそりは、あなたがそれについて考える必要がないことなしで、C - CountとHTMLの間で暗黙のうちに変わります.時にはブロックをCの行のHTMLテキストインラインとして明示的に呼び出すことが便利です.明示的な移行を行うことができます.たとえば、CのCacheコードブロック内からJavaScriptまたはCSSを出力している場合に便利です.
あなたは
<text></text>
ブロックを区切るためのタグ構造@:
一つの行に対して.<script>
@for(int i = 0; i < 10; i++)
{
@:console.log(@i);
}
</script>
これは以下のようになります.<script>
console.log(0);
console.log(1);
console.log(2);
console.log(3);
console.log(4);
console.log(5);
console.log(6);
console.log(7);
console.log(8);
console.log(9);
</script>
これは、次のようにして、サーバー上に設定されたデータをグラフに描画するのに便利です.@section Scripts {
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<script>
window.onload = function () {
var dataPoints = [];
var chart = new CanvasJS.Chart("chartContainer", {
animationEnabled: true,
data: [
{
dataPoints: dataPoints
}
]
});
@{Random rand = new Random();}
@for(int i = 0; i < 10; i++)
{
@:dataPoints.push({ x: @i, y: @rand.Next(0, 100) });
}
chart.render();
};
</script>
}
Docs: Dependency injection into views in ASP.NET Coreカミソリとかみそりページについて詳しく知る
カミソリやかみそりページについての詳細を知りたいですか?この2時間のイントロをチェックしてください:.
あなたはどうですか.
あなたが共有したいお気に入りのかみそり機能を得たか.コメントにドロップ!
Reference
この問題について(.ネットチームのお気に入りの剃刀機能), 我々は、より多くの情報をここで見つけました https://dev.to/dotnet/the-net-team-s-favorite-razor-features-5b72テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol