10

MVC を使用して ASP.Net で Web サイトを構築しており、一連の結果を一覧表示する必要があります。次の両方が私が望むように機能しますが、どちらがより速く、よりクリーンで、および/またはより優れているか、または別のオプションが完全に適切かどうか疑問に思っていますか?

注:ViewData.Modelは型IEnumerable<Thing>であり、より多くの属性を表示する必要がありますName- この例のコードをトリミングしました。


<% foreach (var thing in ViewData.Model)
   { %>
   <p><%= thing.Name %></p>
<% }; %>

<% rptThings.DataSource = ViewData.Model;
   rptThings.DataBind(); %>
<asp:Repeater ID="rptThings" runat="server">
    <ItemTemplate>
    <p><%# DataBinder.Eval(Container.DataItem, "Name") %></p>
    </ItemTemplate>
</asp:Repeater>

4

5 に答える 5

13

foreachASP.NET MVC を使用する方法です。なんで?個人的には、レガシーコントロールは避けasp:xxxいます。Web フォーム モデルに存在する肥大化が発生する可能性があるためです。event delegates第二に、あなたが配線しなければならないすべてについてはどうですか?あなたはアーキテクチャを混ぜ合わせ始めています.IMO. (IMO: DataBinder.Eval == 非常に悪い :( :( :( )

asp:xxx私が使用する唯一のコントロールはmastpage / content control(それに代わるものがないため)です。

最後に、foreach多くの人が信じているように、asp.net mvc で行うことはスパゲッティ コードではありません。最初の mvc デモを初めて見たときのことは知っています。どちらかといえば、実際にはUIが以前よりもはるかにきれいになり、imo ..メンテナンスがはるかに容易になります。IMO、スパゲッティコードは、<% .. %>ビジネスロジックとUIロジック、および(ギャグ)dbアクセスを大量に行う場合です。覚えておいてください、それは asp.netクラシックの野生の西でのぞき見がしたことです:P

概要

Webforeachフォーム コントロールを使用しないようにしてください。これは、シンプルで非常に効率的であり、実行する可能性が非常に高いです。

于 2008-12-07T11:35:54.513 に答える
8

foreach特に何かを台無しにしない限り、間違いなく高速です。Repeaterもちろんよりクリーンで、UI とロジックをよりきれいに分離します。場合によっては、適切にレンダリングするために、より多くの条件 (偶数行と奇数行以外の外観) が必要になることがありますforeach

個人的Repeaterには、通常の状況とforeachより複雑な状況を好みます。

編集: WebControls を使用したプレーンな ASP.NET について話していました。MVC や、大部分がコードによって生成されるページでさえ、foreach の方がより簡単でクリーンであることに同意します。

于 2008-12-07T11:02:02.990 に答える
2

Phil Haack の拡張方式リピーターを使用しています。両方の長所。http://haacked.com/archive/2008/05/03/code-based-repeater-for-asp.net-mvc.aspx

于 2008-12-07T11:40:02.803 に答える
1
<p each="var item in ViewData.Model">${item.Name}</p>

うーん、おいしいスパーク

于 2008-12-07T15:44:43.433 に答える
0

別のオプションがあります。私はこれを自分で使用したことはありませんが、面白そうです。

于 2008-12-07T15:13:49.033 に答える