繁体   English   中英

使用Jquery循环和使用DropDownListFor比较ViewData数据

[英]Looping and comparing ViewData data with DropDownListFor using Jquery

通过控制器,我正在将一个ViewData以及其他几个ViewData的名称发送到我的View(.cshtml)。 在控制器方面,我很信任并以这种方式发送:

List<string> Names = new List<string>();
Names.Add(NameForViewBag.ToString());
ViewData["ViewDataNames2"] = Names;

因此,这将存储我正在创建的ViewDatas的所有名称。

然后,我正在苦苦挣扎的是如何在.cshtml端使用Jquery使用此ViewData。 我的想法是

  • 获取每个此ViewData [“ ViewDataNames2”]字符串;
  • 将每个字符串的名称与DropDownListFor的名称进行比较;
  • 如果DropDownListFor名称的一部分与ViewData字符串名称之一匹配,我应该打印(最终,我将做更多的工作,但现在我正尝试打印它)。

在我的脚本中,我很成功地获取了我的DropDownList的名称。

console.log($("#SeriesTypeId option:selected").text().replace(" ", ""));

但是,这就是我陷入困境的地方。 我想做一些foreach循环,以将该下拉列表与ViewData [“ ViewDataNames2”]的每个字符串进行比较。 我试过的

像这样检索ViewData:

var yValue = "@ViewData["ViewDataNames2"]";

对于我的循环,我尝试了这种方式:

    @foreach (var myName in (List<string>)ViewData["ViewDataNames2"])
            {
            <td class="text-center">FormatName('@myName.NameOfViewData2', 1);</td>
            }

我也尝试过这种方法:

    // If I try this way, on the console it will give error: SyntaxError: unexpected token: keyword 'class'
    /var xValue = @ViewData["ViewDataNames"];

    // If I try this way, on the console it will give error: SyntaxError: expected property name, got '&'
    //var check = @(Newtonsoft.Json.JsonConvert.SerializeObject(ViewData["ViewDataNames"]));

您需要序列化列表,然后使用Json.Parse将其转换回JavaScript数组,如下所示:

var xValue = JSON.parse('@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(ViewData["ViewDataNames"]))');

在JavaScript中将数组循环为:

for (var i = 0; i < xValue.length; i++) {
    var obj = xValue[i];
    //perform operation...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM