2

我想从 C# 函数中获取数据,将其存储在隐藏的 HTML 字段中,然后在 jQuery 中访问它。

这就是我的想法:

C#:

public static string getDuckbillDepts()
{
    List<string> duckbillDptsStr = new List<string>();
    for (int i = 2; i < 100; i++)
    {
        duckbillDptsStr.Add(i);
    }
    return string.Join(",", duckbillDptsStr); // <-- will this work?
}

剃刀:

// I first wanted to use List<int> but then realized HTML would probably mutiny if I tried to give it that data type
@{string duckbillDeptsCSV = CCRReporterUtils.getDuckbillDepts()}

HTML:

<input type="hidden" name="AllDepts" id="hiddenAllDepts" value="@duckbillDeptsCSV" />

jQuery:

var deptsArray = $('hiddenAllDepts').val();

...但是 HTML 中的“duckbillDeptsCSV”是红色的,表明(对吗?)它使编译器感到困惑。我做错了吗?

4

4 回答 4

3

您可以将您的替换<input type="hidden"...Html.Hidden

@Html.Hidden("AllDepts", duckbillDeptsCSV, new { id = "hiddenAllDepts" })

并更新你的 jQuery 来#告诉它寻找那个 id(因为它正在寻找一个<hiddenAllDepts>标签)

var deptsArray = $('#hiddenAllDepts').val();
于 2013-08-16T19:26:41.717 回答
2

如果您不反对在 MVC 视图中包含一些 JavaScript,那么您可以直接将代码添加到 JavaScript 中。例如

<script>
    var deptsArray = '@CCRReporterUtils.getDuckbillDepts()';
</script>

这只是其他答案的替代方法。

要将其转换为数组,您应该能够执行以下操作;

var deptsArray = ('@CCRReporterUtils.getDuckbillDepts()').split(',');
于 2013-08-16T21:11:19.847 回答
2

您可以在 javascript 中实例化一个变量,将 C# 值传递给它,然后在 jquery 中检索它。使用Html.RawJson.Encode方法

在 C# 中返回数组而不是加入它:

public static List<string> getDuckbillDepts()
{
    List<string> duckbillDptsStr = new List<string>();
    for (int i = 2; i < 100; i++)
    {
        duckbillDptsStr.Add(i.ToString());
    }
    return duckbillDptsStr;
}

在你看来,你会有类似的东西:

<script type="text/javascript">
   var deptsArray = @Html.Raw(Json.Encode(CCRReporterUtils.getDuckbillDepts()));
</script>

然后在 jquery 中你只需要对它做一些事情,因为你会有一个字符串数组:

<script type="text/javascript">
   $.each(deptsArray, function (i,e) {
      // Do something with each value
   });
</script>
于 2013-08-16T21:41:00.223 回答
1

尝试使用正确的#过滤器和 jquery 来通过 id 获取元素,例如:

var deptsArray = $('#hiddenAllDepts').val(); // get a string

如果你想要一个数组,你必须使用.split()javascript的方法并将值作为一个数组获取,例如:

var deptsArray = $('#hiddenAllDepts').val().split(','); //get a array of strings
于 2013-08-16T19:26:28.870 回答