【问题标题】:Getting loop value outside the loop MVC C# [closed]在循环MVC C#之外获取循环值[关闭]
【发布时间】:2016-11-30 00:58:27
【问题描述】:

我有一个循环并在 html actionlink 中分配循环外的值。但是每次我提交链接时,只会将最后一个值放入actionlink。有人可以帮助我如何从循环中获取所有值。我的预期结果是当条件满足时,它会分配 actionlinks 类名 - 已访问,如果没有 - NotVisited。我在视图页面中有很多操作链接。

我的代码是——

string[] class_name = null;

    @foreach (string items in str_array) 
                            // str_array I am getting like [0] = 1
                            //                             [1] = 2 
        {
            if (items.ToString() == class_id.ToString()) 
            // class id is integer value eg. 1 and getting from db
            {
                class_name = new string[] { "visited" };  
            }
            else
            {
                class_name = new string[] { "NotVisited" };   
            }
        }

    @Html.ActionLink("test", "R_Class", "R_Class", null, new { @class = string.Format("{0}", class_name), onclick = "return false;" }) 

【问题讨论】:

  • 当你退出循环时,最后生成的字符串数组对象由引用变量 class_name 引用。
  • @Imad,我想当条件满足时,它会将值分配给类到actionlink
  • @class_name,我现在完全明白你所说的,但我想要的不仅仅是最后一个,当条件满足时,我想要所有这些
  • @arifpervez,你需要编辑你的问题并解释你想要做什么,你的变量的值是什么以及预期的结果是什么
  • 编辑您的问题! (什么是class_id,预期结果是什么)

标签: c# asp.net-mvc razor


【解决方案1】:

你的问题有点含糊,但我假设你想分配找到的第一个访问的类(如果有的话)

    var class_name = new string[] {}; // I changed this line just to comply with coding best practices

    @foreach (string items in str_array) 
                            // str_array I am getting like [0] = 1
                            //                             [1] = 2 
        {
            if (items.ToString() == class_id.ToString())
            {
                class_name = new string[] { "visited" };
                break;
            }
            else
            {
                class_name = new string[] { "NotVisited" };   
            }
        }

    @Html.ActionLink("test", "R_Class", "R_Class", null, new { @class = string.Format("{0}", class_name), onclick = "return false;" }) 

如果我的假设是正确的,并且当类没有被“访问”时,它应该是“未访问”,那么您可以使用这样的不太冗长的代码:

    var class_name = new string[] { "NotVisited" }; 
    @foreach (string items in str_array) 
        {
            if (items.ToString() == class_id.ToString())
            {
                class_name = new string[] { "visited" };
                break;
            }
        }

    @Html.ActionLink("test", "R_Class", "R_Class", null, new { @class = string.Format("{0}", class_name), onclick = "return false;" }) 

【讨论】:

  • 非常感谢,这正是我要找的,感谢您的帮助
  • 不客气,伙计:)
【解决方案2】:

我不知道你为什么要这样做,但看起来你想多次申请课程。

string[] class_name = null;
@foreach (string items in str_array) 
{
    if (items.ToString() == class_id.ToString())
    {
        class_name += " visited";  
    }
    else
    {
        class_name += " NotVisited"   
     }
}

@Html.ActionLink("test", "R_Class", "R_Class", null, new { @class = string.Format("{0}", class_name), onclick = "return false;" })

【讨论】:

  • 对不起,我收到转换错误
  • 我仍然收到相同的转换错误
  • 嗨,Imad,非常感谢您的帮助,我遇到了无法转换类型错误,但另一个答案正在工作。非常感谢
猜你喜欢
  • 2015-12-26
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
相关资源
最近更新 更多