1

私のアプリケーションは、C#.Net でコード化された Asp.net MVC3 にあります。DropDownList を持つビューがあります。このドロップダウンリストには、データベースに存在するすべてのテーブルの名前があります。私の要件は、ユーザーがドロップダウンリストから特定のテーブルを選択し、Json im を介して、以下のコードに示すようにテーブルの名前を Json メソッドに渡すことです。

$("#MyTableNames").change(function () {                                         
    $("#MyDiv").load("/../MyController/MyActionMethod", { TableName:$("#MyTableNames").val() }, function () {
    });
});

上記は、テーブル名をコントローラーのアクションに渡す方法です。ここまではすべて問題ありません。以下は私のアクションコードです。クエリを作成するために2つの方法を試しました...エンティティSQLも含まれています.LINQはこれをサポートしていないため、LINQはありません。

 //First Method


  public ActionResult MyAction(string TableName)
            {

         var model = db.ExecuteStoreQuery<TableName>("Select * from " + TableName + "      where Delete_Flag='" + false + "'");
ViewBag.MyData=model;
                return PartialView();
            }

//Second Method


    public ActionResult GetRecords(string TableName)
            {
             var sql = "SELECT VALUE emp FROM " + TableName + " AS emp ";
             var query = db.CreateQuery <TableName>(sql);
             Viewbag.MyData=query;       
             return PartialView();
            }

しかし、上記の方法はどれも <> パラメータをテーブルとして必要としません... ビューに入力できるように、クエリの結果を VierwBag に渡したいです。どうすればこれを達成できるかを提案してください。

4

1 に答える 1

1

設計時に使用する型がわからないため、厳密に型指定されたジェネリックを使用することは困難です。

もう 1 つの方法は、 Massiveなどのマイクロ ORM フレームワークで ExpandoObject\dynamic を使用してデータをクエリすることです。この場合に返されるデータは ExpandoObject であり、必要に応じてクライアントに返すことができます。

于 2012-04-14T08:50:54.410 に答える