【问题标题】:MVC3 Razor > Make Model IEnumerable, so it can be used in View?MVC3 Razor > 使模型 IEnumerable,所以它可以在 View 中使用?
【发布时间】:2011-06-25 15:02:57
【问题描述】:

我有这个模型:

namespace easyBooking.Models
{
    public class CardInfo
    {
        public string name { get; set; }
        public string adress { get; set; }
        public string zipcode { get; set; }
        public string city { get; set; }
        public string ccsID { get; set; }
        public string birthday { get; set; }
        public string nationalitet { get; set; }
        public string cardType { get; set; }
    }
}

我从一个函数中填充并返回到控制器。问题是我不能把这个模型交给我的视图,因为它没有实现 IEnumerable...相反,我必须像这样向 viewBag 添加信息:

var cardInfo = FunctionLib.cardCampingPas(myArray);
                        ViewData.Add("name", cardInfo.name);
                        ViewData.Add("adress", cardInfo.adress);
                        ViewData.Add("nationalitet", cardInfo.nationalitet);
                        ViewData.Add("ccsID", cardInfo.ccsID);
                        ViewData.Add("zipcode", cardInfo.zipcode);
                        ViewData.Add("city", cardInfo.city);
                        ViewData.Add("cardType", cardInfo.cardType);
                        return View("../Reservation/New", ViewData);

这有点愚蠢,当我应该能够直接将 cardInfo 模型添加到视图时。

    var cardInfo = FunctionLib.cardCampingPas(myArray);
    return View("../Reservation/New", cardInfo);

所以基本上我只需要将一堆字符串传递给视图。如何直接从我的视图中访问我的模型 CardInfo?

更新

@rene - 查看我添加了@model 声明的数据。我上次尝试时确实遇到了一些错误,但这一定是因为我尝试foreach 它或其他什么......现在......只是没有错误,我不知道是否有任何东西传递给视图或如何获取数据。

@model easyBooking.Models.CardInfo
@{
    ViewBag.Title = "New";
}
<h2>Ny reservation</h2>
<p>Benyttet kort: @Model.cardType</p>

现在可以了...

【问题讨论】:

  • 最后两行对我来说似乎没问题。你能分享你的看法吗?你有任何错误吗?

标签: asp.net-mvc-3 ienumerable razor


【解决方案1】:

您可以将您的收藏直接传递给视图。

在视图中,您需要声明模型类型:

@model IEnumerable<CardInfo>

【讨论】:

  • @model IEnumerable&lt;easyBooking.Models.CardInfo&gt; 想我已经尝试过这样的事情,但是之后如何从中获取单个值? @model.name @CardInfo.name
  • @Kenneth:这没有任何意义。如何从数组中获取单个值?您可能想使用循环。
  • @sLaks 完全是 `@foreach (var item in Model) { @item.cardType }` 其中 cardType 与 intelliSence 一起使用,看起来不错......但最终给了我 The model item passed into the dictionary is of type 'easyBooking.Models.CardInfo', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1[ easyBooking.Models.CardInfo]'.`
  • @Kenneth:这意味着您的控制器传递了一个项目,而不是一个数组。
  • @sLaks:完全不知道如何转换/投射/强制/注释它应该是一个数组。因此,如果我的模型是电影,则不能在视图中使用,而是我必须制作和排列例如。电影并将该电影添加到其中并将数组电影传递给视图?
猜你喜欢
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
  • 2019-01-08
相关资源
最近更新 更多