gpt4 book ai didi

ASP.NET MVC 将查询结果从 Controller 传递到 View

转载 作者:行者123 更新时间:2023-12-02 22:11:02 26 4
gpt4 key购买 nike

如何在 ASP.NET MVC 的 View 页面中打印查询结果?我的代码是:

public ActionResult Index()
{
var list = from m in db.MenuTables
select m.MenuName;

return View(list);
}

现在我应该写什么来在 View 页面中打印这个查询的结果?

最佳答案

就个人而言,我会养成使用 ViewModels 的习惯,然后将您的 View 强类型化到该模型。

模型 将仅公开您要显示的数据。仅此而已。因此,假设您想要显示名称、价格和一些其他元数据。

伪代码:

//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();


// Let's 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>

等..

注意我已经跳过了一些错误检查等

要点:只传递你需要的。

起初,您可能认为这比需要的代码多得多。对于这个想法,我可以建议的最佳答案是,从长远来看,您会感谢自己养成了这样的习惯,因为 View 应该只知道它需要的确切数据。

仅此而已。发送最少的数据意味着你有一个非常轻便和简单的 View ,这将使你的支持/调试更好。接下来,您将能够对您的 Controller 进行单元测试,如果您做到这一点,将更加智能。

关于ASP.NET MVC 将查询结果从 Controller 传递到 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15303251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com