如何在 ASP.NET MVC 的查看页面中打印查询结果?我的代码是:
public ActionResult Index()
{
var list = from m in db.MenuTables
select m.MenuName;
return View(list);
}
现在我应该写什么来在查看页面中打印这个查询的结果?
如何在 ASP.NET MVC 的查看页面中打印查询结果?我的代码是:
public ActionResult Index()
{
var list = from m in db.MenuTables
select m.MenuName;
return View(list);
}
现在我应该写什么来在查看页面中打印这个查询的结果?
就个人而言,我会养成在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>
ETC..
注意我跳过了一些错误检查等。
要点 - >只通过你需要的东西。
一开始,你可能会说:WTF!这比其他答案长得多!Sif 我想写更多的代码。
对于这种想法,我可以建议的最佳答案是,从长远来看,您会感谢自己养成了这种习惯,因为视图应该只知道它需要的确切数据。不多也不少。发送最少的数据意味着您有一个非常轻松和简单的视图,这将使您的支持/调试更好。接下来,您将能够使用更多智能和智能对您的控制器进行单元测试。
GL!
假设这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>
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
}