现在我做了一些研究.我需要将我从ajax调用中检索到的一些数据存储到我的页面上的WebMethod中,然后我可以随时将其重新拉回来.
我一开始认为ViewState是最好的选择.遗憾的是,您无法以非静态方法的方式引用它.即使我将页面的实例存储在ViewState中,我相信它会在方法结束时解除实例化,从而破坏我保存的任何数据.
我需要这些数据用于我在其他WebMethods中进行的数据库调用.
我的aspx页面的C#代码隐藏的基本方法如下所示:
[WebMethod]
[ScriptMethod]
public static string populateModels(string[] makeIds)
{
}
Run Code Online (Sandbox Code Playgroud)
因此,例如,我需要保存所选的品牌以便从未来的数据库调用中获取.由于我的大多数盒子都是从数据库中过滤和提取的.
此代码适用于在静态WebMethods中的SessionState中检索和存储数据.
[WebMethod(EnableSession = true)]
[ScriptMethod]
public static string populateYears(string[] modelIds)
{
HttpContext.Current.Session["SelectedModels"] = modelIds;
string[] makeids = (string[])HttpContext.Current.Session["SelectedMakes"];
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个网站,到目前为止它是纯 PHP 的。我在想,既然很少有人没有启用 JavaScript(我想知道为什么!),也许我应该将我的网站创建为一个完全 PHP 的网站,而不使用任何 AJAX。难道是我想错了?
可以确定的是,如果我实施一些 AJAX,是否会增加我的网站被破坏的风险?
我是否应该担心这一点并开始使用 AJAX?
我有一个类似于此线程中描述的情况:
如何在c#中的静态方法中获取会话变量的值?
但是,这里没有静态方法(只是一个继承自IHttpHandler的类)
这是我的代码:
<%@ WebHandler Language="C#" Class="Telerik.Web.Examples.FileExplorer.FilterAndDownloadFiles.Handler" %>
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Text;
using Telerik.Web.UI;
namespace Telerik.Web.Examples.FileExplorer.FilterAndDownloadFiles
{
[RadCompressionSettings(HttpCompression = CompressionType.None)] // Disable RadCompression for this page ;
public class Handler : IHttpHandler
{
#region IHttpHandler Members
private HttpContext _context;
private HttpContext Context
{
get
{
return _context;
}
set
{
_context = value;
}
}
public void ProcessRequest(HttpContext context)
{
Context = context;
string filePath = context.Request.QueryString["path"];
filePath = context.Server.MapPath(filePath);
if (filePath == …Run Code Online (Sandbox Code Playgroud) asp.net ×2
c# ×2
ajax ×1
httpcontext ×1
ihttphandler ×1
javascript ×1
php ×1
security ×1
session ×1
viewstate ×1
web-services ×1
webmethod ×1