WebMethod
内でセッション値を使用できますか?
私はSystem.Web.Services.WebMethod(EnableSession = true)
を使用しようとしましたが、 この例では のようなSessionパラメーターにアクセスできません:
[System.Web.Services.WebMethod(EnableSession = true)]
[System.Web.Script.Services.ScriptMethod()]
public static String checaItem(String id)
{
return "zeta";
}
これがwebmethodを呼び出すJSです。
$.ajax({
type: "POST",
url: 'Catalogo.aspx/checaItem',
data: "{ id : 'teste' }",
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert(data);
}
});
次を使用できます。
HttpContext.Current.Session
ただし、EnableSession=true
も指定しない限り、null
になります。
[System.Web.Services.WebMethod(EnableSession = true)]
public static String checaItem(String id)
{
return "zeta";
}
Webメソッドのセッションを有効にする方法は2つあります。
1. [WebMethod(enableSession:true)]
2. [WebMethod(EnableSession = true)]
コンストラクター引数enableSession:true
を持つ最初のものは、私にとっては機能しません。 EnableSession
プロパティを持つ2つ目は動作します。
セッションを有効にするには、[WebMethod(enableSession:true)]を使用する必要があります
[WebMethod(EnableSession=true)]
public string saveName(string name)
{
List<string> li;
if (Session["Name"] == null)
{
Session["Name"] = name;
return "Data saved successfully.";
}
else
{
Session["Name"] = Session["Name"] + "," + name;
return "Data saved successfully.";
}
}
セッションを使用してこれらの名前を取得するには、次のようにします。
[WebMethod(EnableSession = true)]
public List<string> Display()
{
List<string> li1 = new List<string>();
if (Session["Name"] == null)
{
li1.Add("No record to display");
return li1;
}
else
{
string[] names = Session["Name"].ToString().Split(',');
foreach(string s in names)
{
li1.Add(s);
}
return li1;
}
}
そのため、セッションからすべての名前を取得して表示します。
セッションが有効になっている場合、web.configをご覧ください。ここのこの投稿はより多くのアイデアを与えるかもしれません。 https://stackoverflow.com/a/15711748/31437
このように試すことができます[WebMethod] public static void MyMethod(string ProductID、string Price、string Quantity、string Total)//ここに新しいパラメーターを追加{db_class Connstring = new db_class(); {
DataTable dt = (DataTable)HttpContext.Current.Session["aaa"];
if (dt == null)
{
DataTable dtable = new DataTable();
dtable.Clear();
dtable.Columns.Add("ProductID");// Add new parameter Here
dtable.Columns.Add("Price");
dtable.Columns.Add("Quantity");
dtable.Columns.Add("Total");
object[] trow = { ProductID, Price, Quantity, Total };// Add new parameter Here
dtable.Rows.Add(trow);
HttpContext.Current.Session["aaa"] = dtable;
}
else
{
object[] trow = { ProductID, Price, Quantity, Total };// Add new parameter Here
dt.Rows.Add(trow);
HttpContext.Current.Session["aaa"] = dt;
}
}
catch (Exception)
{
throw;
}
}