在将模型传递给视图之前将模型转换为列表

时间:2014-05-25 07:52:06

标签: c# list

我的项目中有这个模型:

public class ListOfProducts
    {
        public List<string> ProductNames { get; set; }       
        public List<string> ProductUrls { get; set; }

    }

我将其传递给我的观点是:

 public ActionResult Index()
        {
            var listOfUrls = GetListOfHrefs();    //Methods for giving values
            var listOfProductNames = GetListOfProductNames();//Methods for giving values
            var model = new ListOfProducts {ProductUrls = listOfUrls, ProductNames = listOfProductNames, ProductGtin = listofGti};


            return View(model);
        }

我想将我的模型作为列表传递给视图,以便按照我想要的方式循环播放...我可以在传递之前将模型转换为列表吗?

尝试model.Tolist()但智能感知无法找到Tolist-Part

编辑:

我真的需要在同一个上下文中访问这两个属性。在这种情况下Artice

 <article id="post-62" class="post-62 x-portfolio type-x-portfolio status-publish has-post-thumbnail hentry has-post-thumbnail x-portfolio-5e9a5c5e0b6c2e1342bfccc9cacb084f x-portfolio-3ce959340d6fed7ed4f041884b46387c">

                <div class="entry-wrap cf">
                    <header class="entry-header">
                        <h2 class="entry-title entry-title-portfolio">
                           <p>@product</p>
                        </h2>
                    </header>
                </div>
                <p>@url</p>
                <span class="visually-hidden"><span class="author vcard"><span class="fn">addiadmin</span></span><span class="entry-title">Gluten &#038; Mjölkfri Raggmunk</span><time class="entry-date updated" datetime="2014-05-21T08:23:32+00:00">05.21.2014</time></span>



            </article>

4 个答案:

答案 0 :(得分:1)

您目前无法将ListOfProducts转换为列表,因为它与列表无关。它是您在代码中定义的新类型。

如果你想让它成为一个列表,你应该继承IEnumerable例如ICollection并实现所需的功能。

实际上,要实施IEnumerable,您需要ListOfProducts中包含所有List<String>的属性,以便您可以对其进行迭代!

答案 1 :(得分:1)

如果我假设ProductNames列表中的每个条目都与ProductUrls中的一个条目匹配,那么您真正追求的是产品列表,并且设计缺少“产品”类。

创建一个类:

public class Product
{
  public string Name {get;set;}
  public string Url {get; set;}
}

现在将您的'ListOfProducts'替换为:

List<Product>()

现在您有了产品清单。您的类ListOfProducts不是必需的。

答案 2 :(得分:1)

它同样要问&#34;我想发送MyClass作为列表...&#34;,这是一个基本的OOB(面向对象编程)概念问题IMO..so发送List {MyClass},你发送一个包含2个列表的对象名称ListOfProducts,是指List {ListOfProducts}?您可以根据需要将任何模型,任何参数附加到视图中,根据需要修改它(任何模型/ ViewBag.Something),您就是游戏标尺

 return View(new List<ListOfProducts >{model});

答案 3 :(得分:1)

ListOfProducts是一个具有列表属性的对象。

我认为你想要的是

@model ListOfProducts

foreach (var item in Model.ProductNames)
{
  ....

foreach (var item in Model.ProductUrls )
{
  ....

编辑:继续发表评论后,你可以这样做(但最后见评论)

@for (int i = 0; i < Model.ProductNames.Count; i++)
{
  <article id="post-62"...
    <div class="entry-...
      <header class="entry...
        <h2 class="entry-title...
          <p>Model.ProductNames[i]</p>
        </h2>
      </header>  
    </div>
    <p>Model.ProductUrls[i]</p>
    ....
  </article>
}

但这仅在ProductNamesProductUrls包含完全相同数量的元素时才有效,在这种情况下,您可能需要重新考虑您的模型

public class Product
{
  public string Name {get; set;}
  public string Url {get; set;}
}

然后在你的索引&#39;中创建一个List<Product>。动作方法并将其传递给视图