将 C# 数组传递给参数中的 Jquery 函数
Pass C# array to Jquery Function in a Parameter
我正在尝试将 C# 数组作为参数传递给 JQuery 函数。
我调用该函数的 C# 代码是:
//Create an Array from filtered DataTable Column
var GatepassIDs = defaultView.ToTable().AsEnumerable().Select(r => r.Field<string>("GatePassID")).ToArray<string>();
//Pass Array to JQuery function
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "<script type='text/javascript' >FillGatePassIDSmartBox("+GatepassIDs+");</script>", false);
Jquery 脚本:
<script type="text/javascript" >
function FillGatePassIDSmartBox(GatepassIDs) {
$('#<%=txt_gatepassID.ClientID%>').autocomplete({
source: GatepassIDs
});
}
</script>
问题是它从 C# 调用传递 System.String[] 而不是传递 Array
值。
请帮忙
我建议使用 Newtonsoft.Json NuGet 包,因为它使处理 JSON 变得微不足道。你可以做
以下:
var jsonArray = JsonConvert.SerializeObject(GatepassIDs);
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "<script type='text/javascript' >FillGatePassIDSmartBox("+ jsonArray +");</script>", false);
我会推荐这个。
var jarr = JsonConvert.SerializeObject(GatepassIDs);
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "FillGatePassIDSmartBox("+ jarr +");", false);
不是直接从 C# 将数组作为参数传递,而是将数组作为变量发送到 JavaScript。然后你可以将它作为参数发送给你的函数:
var GatepassIDs = defaultView.ToTable().AsEnumerable().Select(r => r.Field<string>("GatePassID")).ToArray<string>();
StringBuilder sb = new StringBuilder();
sb.Append("<script>");
sb.Append("var yourGatePassIDArray= new Array;");
foreach(string str in GatepassIDs)
{
sb.Append("yourGatePassIDArray.push('" + str + "');");
}
sb.Append("FillGatePassIDSmartBox(yourGatePassIDArray)");
sb.Append("</script>");
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", sb.ToString());
然后在您的 JavaScript 中使用它作为:
function FillGatePassIDSmartBox(yourGatePassIDArray) {
$('#<%=txt_gatepassID.ClientID%>').autocomplete({
source: yourGatePassIDArray
});
您必须在全局上下文中声明您的数组。
我正在尝试将 C# 数组作为参数传递给 JQuery 函数。
我调用该函数的 C# 代码是:
//Create an Array from filtered DataTable Column
var GatepassIDs = defaultView.ToTable().AsEnumerable().Select(r => r.Field<string>("GatePassID")).ToArray<string>();
//Pass Array to JQuery function
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "<script type='text/javascript' >FillGatePassIDSmartBox("+GatepassIDs+");</script>", false);
Jquery 脚本:
<script type="text/javascript" >
function FillGatePassIDSmartBox(GatepassIDs) {
$('#<%=txt_gatepassID.ClientID%>').autocomplete({
source: GatepassIDs
});
}
</script>
问题是它从 C# 调用传递 System.String[] 而不是传递 Array
值。
请帮忙
我建议使用 Newtonsoft.Json NuGet 包,因为它使处理 JSON 变得微不足道。你可以做 以下:
var jsonArray = JsonConvert.SerializeObject(GatepassIDs);
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "<script type='text/javascript' >FillGatePassIDSmartBox("+ jsonArray +");</script>", false);
我会推荐这个。
var jarr = JsonConvert.SerializeObject(GatepassIDs);
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "FillGatePassIDSmartBox("+ jarr +");", false);
不是直接从 C# 将数组作为参数传递,而是将数组作为变量发送到 JavaScript。然后你可以将它作为参数发送给你的函数:
var GatepassIDs = defaultView.ToTable().AsEnumerable().Select(r => r.Field<string>("GatePassID")).ToArray<string>();
StringBuilder sb = new StringBuilder();
sb.Append("<script>");
sb.Append("var yourGatePassIDArray= new Array;");
foreach(string str in GatepassIDs)
{
sb.Append("yourGatePassIDArray.push('" + str + "');");
}
sb.Append("FillGatePassIDSmartBox(yourGatePassIDArray)");
sb.Append("</script>");
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", sb.ToString());
然后在您的 JavaScript 中使用它作为:
function FillGatePassIDSmartBox(yourGatePassIDArray) {
$('#<%=txt_gatepassID.ClientID%>').autocomplete({
source: yourGatePassIDArray
});
您必须在全局上下文中声明您的数组。