如何将Dictionary从c#(服务器)传递到javascript(客户端)
How to pass Dictionary from c#(server) to javascript(client)
我在c#中有一个构建字典的函数,我需要将这个字典传递给我的java-script函数。
这是我尝试过的
My server function
public partial class login : System.Web.UI.Page
{
protected Dictionary<string, string> GetTradingTypeToSelect()
{
Dictionary<string, string> dict = new Dictionary<string, string>();
try {
string Types =GetString("some text);
var items = Types.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => s.Split(new[] { '=' }));
foreach (var item in items)
{
dict.Add(item[1], item[0]);
}
//this working 100%
}
catch (Exception ex)
{
}
return dict;
}
}
我的客户:
$(document).ready(function () {
$("#Account").keyup(function () {
var TradingTypeToSelect = '<%=GetTradingTypeToSelect();%>';
//TradingTypeToSelect is equals to string '<%=GetTradingTypeToSelect();%>'
var test = TradingTypeToSelect[0].key;
var test2 = TradingTypeToSelect[0].value;
});
});
我在这里错过了什么?
您可以在后面的代码中创建[WebMethod]
,并使用$.ajax
从javascript调用它。下面是一个完整的示例:
代码:
[System.Web.Services.WebMethod]
public static Dictionary<string, string> GetTradingTypeToSelect()
{
var dict = new Dictionary<string, string>();
dict.Add("1", "Item 1");
dict.Add("2", "Item 2");
return dict;
}
。ASPX:
<head runat="server">
<title></title>
<script src="//code.jquery.com/jquery-1.12.3.min.js"></script>
<script type="text/javascript">
$(function () {
$("#Account").keyup(function () {
$.ajax({
type: "POST",
url: "AjaxCallExample.aspx/GetTradingTypeToSelect",
contentType: "application/json;charset=utf-8",
success: function (data) {
alert(data.d["1"]);
alert(data.d["2"]);
},
error: function (errordata) {
console.log(errordata);
}
});
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<input id="Account" type="text" />
</form>
</body>
如何在视图模型中公开字典:
public Dictionary<string, string> TradingTypesToSelect { get; set; }
在<script>
块内迭代字典,创建一个JavaScript关联数组,如下所示:
<script>
var tradingTypesToSelect = {};
<% foreach (var tradingType in Model.TradingTypesToSelect) { %>
tradingTypesToSelect["<%= tradingType.Key %>"] = "<%= tradingType.Value %>";
<% } %>
</script>
至少通过这种方式,您不必进行另一次调用(通过AJAX)来检索额外的数据
我认为您需要创建一个WebMethod来启用从客户端调用服务器函数。下面是一个例子:ASP。Net WebMethod使用jQuery AJAX
相关文章:
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 从javascript客户端验证REST服务
- 无法使用javascript客户端访问远程web服务
- 在javascript客户端和java服务器之间共享Google Analytics ClientID
- 应用程序引擎终结点:用于OAuth2授权的Javascript客户端库需要多个弹出窗口
- 使用Javascript客户端进行REST基本身份验证的安全缺陷是什么(如果有的话)
- 如何从Python服务器获取到Javascript客户端
- 在Javascript客户端中隐藏基本的身份验证凭据
- Postback与Javascript客户端计算
- 有没有办法使用Google's Javascript客户端登录时没有弹出窗口
- javascript客户端ORM的框架
- 如何使用javascript客户端设置Python服务器端
- Firebase服务器发送事件-如何构建Java/JavaScript客户端
- Javascript客户端从ASP.NET MVC后端延迟加载模型
- 当将从javascript客户端调用javaapi时,在javaapi中使用2d数组
- javascript客户端中的服务器端数据绑定
- 在javascript(客户端)中跨多个窗口共享数据
- Javascript客户端提供哪些数据库,不包括特定于浏览器的数据库
- 如何将Node.js服务器数据发送到Javascript客户端
- javascript客户端安全性