【问题标题】:Struct array initialization inside class ASP.NET MVCASP.NET MVC 类中的结构数组初始化
【发布时间】:2015-06-16 13:49:20
【问题描述】:

我在类数组中初始化数组时遇到问题,我有一个 SearchArrayModel:

public class SearchArrayModel
{
    public struct AttribStruct
    {
        public string AttribName { get; set; }
        public string[] AttribValues { get; set; }
    }
    public AttribStruct[] AttribArray { get; set; }
}

我有一个控制器来填充数组:

SearchArrayModel[] src = new SearchArrayModel[1]
{
    new SearchArrayModel()
    {
        AttribArray = new SearchArrayModel.AttribStruct[]
        {
            new SearchArrayModel.AttribStruct
            {
                AttribName = atributes2.attribname, //it's in foreach loop, but it's a string value
                AttribValues = new string[] 
                {
                    values.ToString() //another string values
                }
            }
        }
    }
}

我的看法:

@model allegrotest.Models.SearchArrayModel
@{
    ViewBag.Title = "ShowItems";
}

@using (Html.BeginForm())
{
    @foreach (var item in Model.AttribArray)
    {
        foreach (var item2 in item.AttribName)
        {
            <h2>@item2</h2>
        }
    }
}

正确吗?我想显示 AttribArray 中的所有元素,但在我的视图中我只有一个元素

或者我的 foreach 循环中可能有什么问题..

【问题讨论】:

  • 我会从避免可变结构开始...
  • 我在使用 API 并且有一些结构和奇怪的东西,这就是我遇到问题的原因
  • 这是一个非常模糊的评论。你的意思是 API 暴露了可变结构吗?我会非常警惕任何这样的 API...

标签: c# asp.net arrays asp.net-mvc


【解决方案1】:

您不能迭代 string 值。要显示数组中的所有元素,您可以将代码重新排列为:

@model allegrotest.Models.SearchArrayModel
@{
    ViewBag.Title = "ShowItems";
}

@using (Html.BeginForm())
{
   @foreach (var item in Model.AttribArray)
   {
      <h2>@item.AttribName</h2>
      foreach (var item2 in item.AttribValues)
      {
         <h3>@item2</h3>
      }
   }
}

【讨论】:

    【解决方案2】:

    如果values 是您可能想要的集合

    AttribValues = values.Select(v => v.ToString()).ToArray() //another string values
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      • 2012-05-02
      • 2015-07-29
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多