これは単なるサンプルです(&が動作しています)。コントローラクラス内にメソッドを保持しています。メソッドをいくつかのサービスレイヤに移動して、多くのUI /コントローラで使用できるようにすることをお勧めします。
public ActionResult Index()
{
var items= GetUniversities();
return View(items);
}
private List<DataRow> GetUniversities()
{
List<DataRow> list=null;
string srtQry = "SELECT U.* FROM Office O INNER JOIN
CampusUniversity CU ON O.IdCampus equals CU.IdCampus
INNER JOIN UNIVERSITY U ON U.IdUniversity=CU.IdUniversity";
string connString = "Database=yourDB;Server=yourServer;UID=user;PWD=password;";
using (SqlConnection conn = new SqlConnection(connString))
{
string strQry = "";
using(SqlCommand objCommand = new SqlCommand(srtQry, conn))
{
objCommand.CommandType = CommandType.Text;
DataTable dt = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(objCommand);
conn.Open();
adp.Fill(dt);
if (dt != null)
{
list = dt.AsEnumerable().ToList();
}
}
}
return list;
}
GetCustomersメソッドは、DataRowのリストを返します。カスタムドメインエンティティではありません。 エンティティフレームワークは、ドメインエンティティのリストを提供しています。したがって、カスタムSQLの場合、データ行を独自のカスタムオブジェクトのインスタンスにマップする必要があります。 LINQで
、あなたはこの
public ActionResult Index()
{
var items= GetCustomers();
var newItems = (from p in items
select new
{
Name= p.Field<String>("Name"),
CampusName= p.Field<String>("CampusName")
}).ToList();
return View(newItems);
}
のようなカスタムオブジェクトへのDataRowのリストを変換することができますこれは、あなた2つのプロパティ、Name
とCampusName
を持っている匿名型のリストが表示されます。名前とCampusNameがクエリ結果に2列あると仮定します。
EDIT2は:コメントを1として、ビューの下にフォルダ(私たちは、このアクションメソッドを書いたところ)をFolder.Weが強く型付けされたようにする必要があり、あなたのコントローラ内のインデックスと呼ばれるビューを作成し、ビューにこれらのデータを一覧表示しますビュー。ちょっと待って!ビューにどのようなタイプを渡しますか?
私たちの結果は、匿名のタイプです。そこで、この場合はViewModelを作成し、annonymousの代わりにViewModelのListを返します。
public class UniversityViewModel
{
public string UniversityName { set;get;}
public string CampusName { set;get;}
}
ここで、このようなIndexアクションでコードを更新します。
var newItems = (from p in items
select new UserViewModel
{
UniversityName = p.Field<String>("Name"),
CampusName = p.Field<String>("CampusName")
}).ToList();
ここでは、ここではタイプを変更しました。したがって、出力はもう公式ではありません。しかし、既知のタイプ。
私たちはこのようなコードを書いてみましょう。
@model IEnumerable<SO_MVC.Models.UserViewModel>
@foreach (var item in Model)
{
<p>@item .UniversityName @item.CampusName</p>
}
このビューは、ViewModelのコレクションに強く入力されます。いつものように私たちはそれを繰り返して表示しています。これは正常に動作するはずです。それはテストされています。
友人@Shyjuさん、ありがとう、私はどのようにこれらのデータを表示するには、私はモデルのクラスを作成する必要がありますか?どのようにクエリにパラメータを追加できますか? –
@JoseLuis:ビュー内の項目を表示するための回答を更新しました。私はあなたがコメントにそれを尋ねるのではなく、関連する詳細で新しい質問を投稿することをお勧めします。がんばろう。お役に立てれば。 – Shyju