4

querystringリクエストの値を抽出する静的メソッドがあります。しかし、nullから呼び出すと価値がありますwebmethod。以下はいくつかのコードです

public static int GetLatestAssetId()
    {
        int itemid=0;
        if (HttpContext.Current.Request.QueryString["itemId"] != null)
        itemid = Convert.ToInt32(HttpContext.Current.Request.QueryString["itemId"]);
        return itemid;
    }

[WebMethod]

        public static string GetContactData()
        {

            GetLatestAssetId();
            return "Success"
        }

この webmethod をajax 呼び出しから呼び出しています。ページの読み込みでは正常に機能しますが、静的メソッドでは機能しません。これを静的メソッドで使用するにはどうすればよいですか。手伝ってください。

4

8 に答える 8

6

呼び出しとともにクエリ文字列を渡す必要があります。これは、ajax 呼び出しから実現できます。

   var qString = "?" + window.location.href.split("?")[1];
      $.ajax({ 
              url: "<aspx pagename>/<ajax method>" + qString,
              data: {},
              dataType: "json",
              contentType: "application/json; charset=utf-8",
              type: "POST",
              success: function(){},
              error: function () { },
              completed: function () { }
             });

その後、サーバー側の変数に通常どおりアクセスできます。

string value = HttpContext.Current.Request.QueryString["itemId"].ToString();
于 2016-02-09T10:44:01.430 に答える
3
int itemid =Convert.ToInt32(HttpContext.Current.Request.Form["itemid"]);
于 2013-07-29T14:32:56.917 に答える
0
//Get Querystring name value collection  
    public static NameValueCollection GetQueryStringCollection(string url)  
    {  
        string keyValue = string.Empty;  
        NameValueCollection collection = new NameValueCollection();  
        string[] querystrings = url.Split('&');  
        if (querystrings != null && querystrings.Count() > 0)  
        {  
            for (int i = 0; i < querystrings.Count(); i++)  
            {  
                string[] pair = querystrings[i].Split('=');  
                collection.Add(pair[0].Trim('?'), pair[1]);  
            }  
        }  
        return collection;  
    }  

//Web メソッドでこれを呼び出します

NameValueCollection collection = GetQueryStringCollection(HttpContext.Current.Request.UrlReferrer.Query);  
        if (collection != null && collection.Count > 0)  
        {  
            string id = HttpContext.Current.Server.UrlDecode (collection["id"]);  
        } 
于 2015-07-18T09:14:28.823 に答える
0

ルーターを使用している場合は、RouteData を使用してみてください

 string userIdQuery = string.Empty;               
 var userIdRouterValue = HttpContext.Current.Request.RequestContext.RouteData.Values["UserID"];
            if (userIdRouterValue!=null)
            {
                userIdQuery = userIdRouterValue.ToString();
            }
于 2019-01-31T04:26:48.727 に答える