【发布时间】:2013-08-16 18:58:04
【问题描述】:
我想从 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”是红色的,表明(对吗?)它使编译器感到困惑。我做错了吗?
【问题讨论】:
-
可能。 Visual Studio 可能会在视图中出现错误问题。当您将鼠标悬停在错误上时它会说什么?或者当你运行它时会发生什么?通常视图是在运行时编译的,您可以毫无问题地编译和运行它。
-
您是否尝试过加载页面并查看实际的错误消息是什么?这可能对告诉您您的问题大有帮助。不过,我的第一个标志是你没有终止你的赋值语句。这是一个问题。其次,你不需要使用隐藏字段来做你正在谈论的事情。您可以将数据传递(请不要从视图中的 utils 检索)到视图,然后使用 Razor 混合的 javascript 创建变量并设置它们的初始值。
-
@Steven V:上面写着“无法解析符号”
-
@BrianWarshaw:“剃刀混合的 javascript”? JS 对 Razor 一无所知,是吗? IOW,这对双胞胎永远不会相遇?
-
您正在使用 Razor/ASP.NET MVC 来编写 HTML 文档,就像您手动编写的一样,或者使用 PHP 或其他任何确定发送到浏览器。因此,如果您在“Razor”中有它,您可以在您的 javascript 标签中输出它,作为您在其中的任何其他内容的一部分。 JS 对 PHP、键盘或其他任何东西一无所知。一个文档被发送到浏览器——Razor 只是帮助你形成那个文档。
标签: c# javascript jquery asp.net-mvc razor