【问题标题】:How do I access an ASP.NET variable to pass as JSON string to WCF Ajax Enabled Service如何访问 ASP.NET 变量以作为 JSON 字符串传递给 WCF Ajax Enabled Service
【发布时间】:2014-04-23 00:42:59
【问题描述】:

我有一个启用了 WCF AJAX 的 Web 服务,我正在尝试使用 JSON 将 ASP.NET 页面中的字段值传递给它,但我总是一无所获。我想做一些类似于我们在 ASP.NET Web 服务中所做的事情:

request.form("SbID").toString();

我的 Web 服务正在获取一个为 NULL 的参数,我认为这是因为我在表单中传递的内容。网络服务是:

[OperationContract]
        [WebGet]
        public ResultData GetContactsDataAndCountbyGUID(string requestGUID)
        {
            ResultData result = new ResultData();
            common c = new common();

            string request = String.Empty;
            try
            {
                request = OperationContext.Current.RequestContext.RequestMessage.ToString();

            }
            catch (Exception ex)
            {

            }

            try
            {
                List<CONTACT> listContacts = new List<CONTACT>();

                DataSet ds = new DataSet();
                ds = c.GetDataSet(requestGUID);
                DataTable dt = new DataTable();
                dt = ds.Tables[0];

                // listContacts = CollectionHelper.ConvertTo<CONTACT>(dt);

                listContacts = c.ConvertTo<CONTACT>(dt);

                result.Data = listContacts;
                result.Count = listContacts.Count;

           }

这是 JavaScript/jQuery:

  <script type="text/javascript">
            //function DoUpdate(sbiId) {
            //    var input = '{"SbiId":"' + sbiId + '"}';
            //    var dataSource;
        $(document).ready(function() {
            **var input ='{"SbiId":"<%=guid %>"}';**
            $.ajax({
                url: "http://www.blah.com/services/testsService.svc/GetContactsDataAndCountbyGUID",
                type: "GET",
                contentType: "application/json; charset=utf-8",
                data: input,
                dataType: "json",
                success: function(data) {
                    var mtv = $find("<%= RadGrid1.ClientID %>").get_masterTableView();
                    console.log(data);
                    mtv.set_dataSource(data.d.Data);
                    mtv.dataBind();
                }
            });
            // }

        });
        </script>

我正在尝试传递 GUID 的值,格式为:

public string guid = null;
        common c = new common();
        protected void Page_Load(object sender, EventArgs e)
        {
             try
            {

                IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<AlphaHub>();
                // common c = new common();
                var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
                ApplicationUser user = userManager.FindByNameAsync(User.Identity.Name).Result;
                string connectionId =  c.GetCurrentConnection(user.RegistrationCode);       

                string request = "Contact" + " - " + connectionId + " - " + user.RegistrationCode;
                string guid = c.recordDataRequest(user.RegistrationCode, request, connectionId, "out", "");
                request = request + " - " + guid;
                hubContext.Clients.Client(connectionId).CallForReport(request);  
           //   hub
                Thread.Sleep(1000);
            }

如何让这个值传入和检索?

【问题讨论】:

    标签: jquery asp.net ajax json wcf


    【解决方案1】:

    ASP.Net 是无状态的,您将无法从后面的代码中访问变量。 将其存储在一个隐藏变量中,您可以从 jQuery 访问该变量。

    <input type="hidden" id="hdnGuid" runat="server">
    

    在你的代码中设置它:

    string guid = c.recordDataRequest(user.RegistrationCode, request, connectionId, "out", "");
    hdnGuid.Value = guid;
    

    在你的 jQuery 中访问它:

    var hdnGuid = $("#<%= hdnGuid.ClientID %>").val();
    var input ='{"SbiId":"' + hdnGuid + '"}';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-13
      • 2021-10-04
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2022-08-10
      • 1970-01-01
      相关资源
      最近更新 更多