1

私は asp.NET Web サイトで作業しています。これは慣れていないものです。asp:Textbox私は大量のコントロールを含むページを持っておりrunat="server"、すべてDataTable. 基本的に、何らかのMVC モデルのような機能を実装して、それぞれに値を割り当てることができるようにしたいと考えていますtextbox

それで、いくつか質問があります:

  1. かなりベストプラクティスの方法でこれを行う方法はありますか? (セッションなどを使いたくない)
  2. そうでない場合、誰かがこれを行うためのより良い方法を提案できますか?

の 1 つの一般的な外観textboxは次のとおりです。

<asp:Textbox runat="server" class="number" name="ns_loanAmt" id="ns_loanAmt" value="???" />
4

1 に答える 1

1

質問はかなり古いようで、何らかの理由で編集されているため、誰かがまだ興味を持っている可能性があります。

OPが組み込みのWebフォームバインディングを考慮していないのはなぜだろうか。最近は主に MVC を使用していますが、何年もの間、ASP.NET データ バインディングを使用して数十のアプリケーションを開発してきましたが、確実に機能します。

この特定のケースでは、単一のテキスト ボックスのモデルとなるクラスを作成します。クラスには、値、CSS クラス、場合によってはその他のプロパティが含まれます。

public class RowModel
{
    public string Text { get; set; }
    public string CSSClass { get; set; }
    ...
}

次に、リピーター、グリッドビュー、またはリストビューを作成し、行テンプレートにテキスト ボックスを配置します。

<asp:ListView ID="listView1" runat="server">
  ...
  <ItemTemplate>
     <asp:TextBox id="textBox" runat="server" 
                  cssclass="<%# CSSClass %>" Text="<%# Text %>" /> 
  </ItemTemplate> 

次に、コード ビハインドで、モデル インスタンスのリストをバインド可能なコントロールにバインドします。

List<RowModel> rowList;
...
if ( !this.IsPostBack )
{
   listView1.DataSource = rowList;
   listView1.DataBind();
}

またはObjectDataSource宣言的にバインドして作成することさえできます。

次に、ポストバックごとに、ポストされた値のリストを読み取ってデータベースに戻すことができます。

ASP.NET Web フォーム バインディングは常に機能し、自動ビューステート管理により、特定のシナリオは手動の MVC に似た状態管理よりもはるかに単純になりました。たとえば、リストビューで提供される挿入テンプレートと編集テンプレートは簡単に切り替えることができましたが、プレーンな MVC では多少の努力が必要です (ただし、何が起こるかについてははるかに優れた制御が可能です)。

于 2014-04-06T19:14:12.230 に答える