1

私の ASP.Net MVC 4 では、コントローラーからビューに複数のデータテーブルを送信したいと考えています。次に、それらのデータテーブルはそのビューで反復されます。どうすればできますか?私はmvcの世界の新参者です。

期待していただきありがとうございます。

更新-単一のデータテーブルをビューに送信して反復する方法を知っています。しかし、複数のテーブルが関係している場合のテクニックを知る必要があります。

更新 - 私のビューは部分ビューです。

4

3 に答える 3

1

モデルを使用してデータを表現することをお勧めします。これが MVC のポイントです。確かに、データテーブルを使用できますが、なぜですか?

datatable には単一のテーブル データしか含まれていないことに注意してください。複数のテーブルを含む DataSet を持っているか、データテーブルの一般的なコレクションだけを持っています。

データセットを使用している場合....

プロパティを使用してモデルを作成し、データセット内のデータテーブルをテーブルごと、行ごとに反復処理し、現在の行/テーブル用に作成しているモデルをコレクションに追加します。最後に、そのコレクションをビューに戻します。

データセット内のテーブルを反復処理するには...

DataSet ds = this.GetDataSet();
            foreach (DataTable currentTable in ds.Tables)
            {
                foreach (DataRow currentRow in currentTable.Rows)
                {
                    // looping through each row within this datatable
// at this point, you need to then map the current row data to the Model. I'll let you deal with this
                }
            }

現在使用しているコードを表示できるとよいでしょう。

于 2013-11-01T12:48:53.207 に答える
0

最善の方法は、ViewModel (ビューを提供し、ビューに必要なデータを提供するクラス) として機能するクラスを作成することです。このクラスは、必要に応じて N 個のプロパティで構成されます。

コントローラー内で必要なのは、このクラスの新しいオブジェクトを作成し、クラスのプロパティ (目的の 4 つのデータテーブルなど) を入力し、このクラス オブジェクトをビューに送信して、テーブルを簡単に反復処理できるようにすることだけです。

例:

public class MyDataViewModel()
{

  public DataTable FirstTable {get; set;}
  public DataTable SecondTable {get; set;}
  public DataTable ThirdTable {get; set;}
  public DataTable ForthTable {get; set;}
}

コントローラー内で、新しいオブジェクトを作成し、プロパティ内にデータを入力します

var myDataObject = new MyDataViewModel();
myDataObject.FirstTable = // your First Table  data ;
myDataObject.SecondTable = // your Second Table data ;
myDataObject.ThirdTable = // your Third Table  data ;
myDataObject.ForthTable = // your Forth Table  data ;

return view(myDataObject);

注:最終的な表現は状況によって異なります。私の推測では、データテーブルは必要なく、List<YOUR_OBJECT>ビューにデータを保持するものを作成する方がよいでしょう

更新:List<YOUR_OBJECT> Datatables の代わりに項目を作成するには、ViewModel クラスのプロパティをList<YOUR_OBJECT>DataTables の代わりに変更します。非常に簡単だと思います:)。

于 2013-11-01T12:50:08.250 に答える
0

MVC でビューを作成するときはいつでも、モデル/ViewModel をそのビューにバインドします。要件を考慮して、最初に対応するデータテーブルのビューモデル/モデルを作成し、データテーブルから対応するモデル/ビューモデルのリストにデータをバインドしてから、それらをビューに渡す必要があります。複数のデータテーブルを反復するには、diff の部分ビューを使用する必要があります。モデル。)

于 2013-11-01T14:11:18.240 に答える