如何在ASP.NET MVC的View頁面中打印查詢結果? 我的代碼是:ASP.NET MVC從控制器傳遞查詢結果以查看
public ActionResult Index()
{
var list = from m in db.MenuTables
select m.MenuName;
return View(list);
}
現在我應該寫什麼可打印此查詢中查看頁面的結果呢?
如何在ASP.NET MVC的View頁面中打印查詢結果? 我的代碼是:ASP.NET MVC從控制器傳遞查詢結果以查看
public ActionResult Index()
{
var list = from m in db.MenuTables
select m.MenuName;
return View(list);
}
現在我應該寫什麼可打印此查詢中查看頁面的結果呢?
假設list
是字符串的IEnumerable
(即MenuName是字符串)。
在您看來,接受模型IEnumerable<string>
@model IEnumerable<string>
,然後枚舉它
@foreach(string s in Model)
{
<div>
@s
</div>
}
你想要做的第一件事就是調用ToList(),否則你可能被執行相同的SQL查詢多次。
public ActionResult Index()
{
var list = (from m in db.MenuTables
select m.MenuName).ToList();
return View(list);
}
其次,我不會只是傳遞一個完整的列表。你應該創建一個ViewModel。這將允許您稍後以較小的努力傳遞更多數據。
public ActionResult Index()
{
var model = new IndexModel();
model.Tables = db.MenuTables.ToList();
model.AnotherValue = "MENUS";
return View(model);
}
現在我們在視圖中,您將需要設置模型並迭代表格。
@model IndexModel
<h3>@Model.AnotherValue</h3>
<ul>
@foreach(var table in Model.Tables) {
<li>@table.Name<li>
}
</ul>
就個人而言,我會得到具有ViewModels
,然後強烈輸入您的視圖,該模型的習慣。
model
將只顯示您想要顯示的數據。沒有更多,沒有更多。 因此,讓我們假設你想顯示名稱,價格和一些其他元數據。
僞代碼...
//View Model
public class MenuItem
{
public string Name { get; set; }
public decimal Price { get; set; }
public bool IsVegetarian { get; set; ]
}
public class IndexViewModel
{
public IList<MenuItem> MenuItems { get; set; }
public string MaybeSomeMessage { get; set; }
}
//in Controller
public ActionResult Index()
{
// This gets the menu items from your db, or cache or whatever.
var menuItemsFromDb = GetMenuItems();
// Lets start populating the view model.
IndexViewModel model = new IndexViewModel();
// Project the results to your model.
IList<MenuItems> menuItems = null;
if (menuItemsFromDb != null)
{
model.MenuItems = (from menuItem in menuItemsFromDb
select new MenuItem() {
Name = menuItem.Name,
Price = menuItem.Price,
IsVegetarian = menuItem.IsVegetarian
}).ToList();
}
// Anything else...
model.MaybeSomeMessage = "Hi There!";
return View(model);
}
//in View
@model IndexViewModel
<h3>@Model.MaybeSomeMessage</h3>
<ul>
@foreach(var item in Model.MenuItems)
{
<li><a href="#">@item.Name</a> - $ @item.Price</li>
}
</ul>
等。
注意到我已經跳過了一些錯誤檢查等
點 - >僅通過你所需要的。
起初,你可能會去:跆拳道!這比其他答案長得多! Sif我想寫更多的代碼。
我可以向這個想法提出的最佳答案是,從長遠來看,你會感謝你養成這樣的習慣,因爲視圖應該只知道它需要的確切的數據。沒有更多,沒有更多。發送最少量的數據意味着您有一個非常簡單的視圖,這將使您的支持/調試更好。接下來,您將能夠在掌握更多智能和智能的情況下對您的控制器進行單元測試。
GL!
public ActionResult Index()
{
var list = from m in db.MenuTables
select m.MenuName;
return View(list);
}
//In View
@model IEnumerable<ProjectName.models.MenuTables>
@foreach(var item in Model)
{
@item.Field_Name
}
這可能會幫助你... – 2016-11-09 11:31:57
+!優秀答案 – 2013-03-08 21:26:40