c# - 将大量列表传递给 MVC3 中的 View

标签 c# asp.net-mvc asp.net-mvc-3

ASP.NET MVC 的新手(现在将 MVC3 与 Razor 结合使用),我对将对象从 Controller 传递到 View 感到困惑。具体来说,我正在试验 MVC3 和 Rob Conery 有趣的 Massive (http://blog.wekeroad.com/helpy-stuff/and-i-shall-call-it-massive)。我正在将博客作为一个简单的 Web 应用程序来进行试验。

HomeController.cs:

public ActionResult Index()
        {
            var table = new DynamicModel("mydb", tableName: "Posts");
            //grab all the posts
            var posts = table.All();
            ViewData["Posts"] = posts;

            return View();
        }

这部分效果很好。但我该怎么做呢?

return View(posts);

如果我在 View 中引用 @posts.PostID,它会出错并说它无效。因此,我尝试针对 DynamicModel 创建强类型 View ,但 posts 仍然不存在。

我知道我可以创建一个 ViewModel 并针对它键入 View ,然后将我的数据插入其中。这更多是关于了解 Controller / View 如何交互。

谢谢!

最佳答案

首先你需要创建一个类。例如:

public class Post : DynamicModel
{
    public Post(): base("db")
    {
       PrimaryKeyField = "PostID";
    }

}

在 Controller 中你可以有:

public ActionResult Index()
        {
            var table = new Post();
            var posts = table.All();

            return View(posts);
        }

因此您可以创建强类型 View 并将 View 的模型设置为 IEnumerable。 View 将是这样的:

@model IEnumerable<dynamic>

<h2>Index</h2>
<ul>
@foreach (var item in Model)
{
    <li>@item.PostID</li>
}
</ul>

关于c# - 将大量列表传递给 MVC3 中的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5485052/

相关文章:

jquery - 完整日历 + 事件 + 事件 Drop + Ajax - 不发送日期值

c# - MVC 3 如何使用 MapRoute

javascript - Javascript 代码中的代码 Razor

c# - 调整 PNG 图像大小,而不丢失完全透明像素的颜色数据

c# - TcpClient 已建立,但 TcpClient.getStream() 失败

asp.net-mvc - 将 LINQ to EF 投影到 View 模型时出现异常。获取 "only parameterless constructor and initializers"异常

c# - RadioButtonFor 和标签

c# - 无法在 web.config 中为 WCF Web 服务设置服务名称属性

c# - XAML 中的触发器属性

asp.net - 从 ASP.NET MVC5 中的 Url 中删除多余的斜杠,