7

カスタム html ヘルパー メソッドを作成する必要があります。私が知る限り、次の 2 つの方法があります。

  1. @helper razor 構文を使用します。http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx

  2. HtmlHelper 拡張メソッドを作成します。

どのソリューションが優れていて、その理由は何ですか? 長所と短所は何ですか?

@helper が別の .cshtml ファイルでグローバルに作成されている場合、MVC 3 でのみ、他の組み込みの html ヘルパーを使用することは不可能です。おそらくMVC 4では可能かどうかわかりません。

助けてください。

4

3 に答える 3

3

それらは、ユーザー コントロールとカスタム コントロールのようなものです。

ビューでのカミソリ スタイルの書式設定には @helper を使用します。追加のパラメーターを受け取るラベル作成のオーバーロードなど、一般的なソリューションには拡張メソッドを使用します。

ここで例を含む詳細な説明を見つけることができます

于 2013-07-23T12:44:51.147 に答える
3

どのソリューションが優れていて、その理由は何ですか?

場合によります。

長所と短所は何ですか?

  • カスタム HtmlHelper 拡張機能の利点:
    • 使用しているビューエンジンに関係なく機能します
    • 単体テスト可能です
    • アプリケーション間で移植可能
  • カスタム HtmlHelper 拡張機能の短所:
    • C# で大量の HTML ロジックを記述するのが面倒になる可能性がある
  • の長所@helper
    • 見たことない、使ったことない
  • 短所@helper
    • 見たことない、使ったことない

実際には、@helper私見はまったく役に立たないということです。カスタム HtmlHelper 拡張機能について説明した利点が必要な場合は、カスタム HtmlHelper 拡張機能を作成します。

また、カスタム HtmlHelper 拡張機能について前述した欠点に直面している場合は、部分ビューを使用してください。

@helper が別の .cshtml ファイルでグローバルに作成されている場合、MVC 3 でのみ、他の組み込みの html ヘルパーを使用することは不可能です。

それは間違っている。他の Html ヘルパーを問題なく使用できます。それらをパラメーターとして渡すだけです。

@helper FooBar(HtmlHelper html) {
    feel free to use the html helper here
}

ビューから消費する場合:

@HelperName.FooBar(Html)
于 2013-07-23T12:49:39.660 に答える