gpt4 book ai didi

c# - 传递列表以在 asp.net mvc 中查看

转载 作者:行者123 更新时间:2023-11-30 14:30:11 25 4
gpt4 key购买 nike

这是 Controller 的操作方法。

public class MoviesController : Controller
{
private MovieDBContext db = new MovieDBContext();

// GET: /Movies/
public ActionResult Index()
{
return View( db.Movies.ToList() );
}
}

可以看出一个List正在传递给 View这就是为什么我希望使用它作为 Listview但在 View它作为 IEnumerable 工作

以下是来自 View 的第一行

@model IEnumerable<MVCWebApplication2.Models.Movie>

为什么传递的值是 List表现为 IEnumerable ?是IEnumerable父类(super class)List

最佳答案

List<T>实现 IEnumerable<T>界面:

http://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx

在可能的情况下尝试使用接口(interface)以保持代码解耦通常是最佳实践,因此这就是 View 的原因。就这样被搭上了脚手架。在这种情况下,您可以传递任何其他 Movie实现 IEnumerable<T> 的集合给你的View ,还有你的 View会愉快地渲染而不会出现问题。

所以,假设您有另一个 Action在其他一些Controller喜欢:

    public ActionResult Index()
{
Queue<Movie> movies = new Queue<Movie>();
movies.Enqueue(db.Movies.Single(m => m.Title == "Flash Gordon"));
movies.Enqueue(db.Movies.Single(m => m.Title == "Star Wars"));
return View( "Movie/Index", movies );
}

因为 Queue<T>工具 IEnumberable<T> , movies将由相同的 View 呈现无需对其进行任何更改。如果你的View被输入为 List<Movies> , 你需要创建一个完整的单独的 View以容纳您的Queue<Movies>模型!

关于c# - 传递列表以在 asp.net mvc 中查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24046007/

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