1

MVC を使用してカミソリ ビューを設計するためのベスト プラクティスを探しています。

どちらがより良いオプションでしょう:

HtmlHelper 拡張メソッド

    @Html.TextBox("txtName")

または
htmlを直接書く

    <input type"text" id="txtName" name="txtName" />

2 つの異なるリンクが見つかりました。最初のものhttp://blogs.msdn.com/b/aspnetue/archive/2010/09/17/second_2d00_post.aspx、HTMLHelper 拡張メソッドを使用することを示しています。
2 つ目のhttp://codeclimber.net.nz/archive/2009/10/27/12-asp.net-mvc-best-practices.aspxには、 10 – 可能な限り HTML を記述します。

だから私は少し混乱しています

4

3 に答える 3

1

名前でさえ、HtmlHelperあなたがそれを使うべきかどうかのヒントをすでにあなたに与えるはずです。何かお困りですか?そうでない場合は、最初からhtmlを記述してください。htmlがどのように生成されたかは、実際には重要ではありません。最初から、またはhtmlヘルパーを使用します。重要なのは、モデルバインダーがこれらの入力をモデルにバインドできるように、入力の正しい名前で生成されたことです。

たとえば、ビューに渡され、POSTで受信される次のモデルがあるとします。

public class SomeModel
{
    public Customer Customer { get; set; }
}

public class Customer
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

入力がモデルにバインドされることを確認するには、ページに3つの入力が必要です。

<input type="hidden" id="whatever" name="Customer.Id" /> 
<input type="text" id="whatever" name="Customer.FirstName" />
<input type="text" id="whatever" name="Customer.LastName" />

このhtmlマークアップを使用すると、適切なモデルマインドが保証されます。ただし、HtmlHelpersを使用すると、このマークアップを実現できます。これは、はるかに簡単です。

@Html.HiddenFor(m => m.Customer.Id)
@Html.TextBoxFor(m => m.Customer.FirstName)
@Html.TextBoxFor(m => m.Customer.LastName)

nameこれにより、すべての入力に適切な属性が与えられるだけでなく、idそれに応じて属性が割り当てられるため、すべてを自分で行う必要はありません。


2番目の記事の著者は、次の2つの理由でHtmlHelpersを使用しないことを提案しているようです。

  1. 学習目的:「Web開発者はHTMLの記述に慣れている必要がある」と言うことで、開発者は適切なモデルバインディングに必要なHTMLマークアップを正確に知っている必要があると思います。
  2. ブラックボックスの恐れ:作成者は、HtmlHelpersを使用して不適切なhtmlマークアップが生成されることを恐れているか、どのhtmlが生成されるかを知らないようです。

私は彼の言い回しに同意しません:「生きる唯一の理由がHTMLを隠すことであるHtmlHelpers」。私はむしろ「生きる唯一の理由がHtmlマークアップを書くのを手伝うことであるHtmlHelpers」と言いたいです


概要: HtmlHelpersは、適切なhtmlマークアップを作成するのに役立ちます。そのため、HtmlHelpersを使用することをお勧めします。

于 2012-11-09T18:03:02.590 に答える
1

あなたは を使用しているのでRazor、それが提供するものを最大限に活用したいと思います。HtmlHelper拡張機能により、多くの場所で html をより迅速かつ簡単に記述できます。

代わりに Html を使用しなければならない場合があります@Html.ActionLink。たとえば、タグをアンカーに含めたいが を使用できない場合などです。

ただし、どちらのアプローチでも同じ結果が得られる場合は、 を使用することをお勧めしますRazor

于 2012-11-09T16:52:58.377 に答える
0

HTMLヘルパーは、時間を節約するだけの表面的なコードスニペットではありません。モデルのプロパティタイプに基づいて適切なエディターを選択することを検討してください。また、jquery.unobtrusive-ajax.jsとjquery.validate.jsを含めると、クライアントの検証に役立ちます。
最後は、HTMLを書くだけでは達成できません。
私が言ったことから、Htmlヘルパーはモデルについて「知っている」が、単純なマークアップは知らないことが簡単に導き出されます。
最後に、何を使用するかを決めるのはあなた次第ですが、決定を下すときは、Htmlヘルパーについてもっと知る方がよいでしょう。

于 2012-11-09T17:37:17.180 に答える