【发布时间】:2012-12-04 02:39:16
【问题描述】:
我有一个 WebMethod,它作为数据源提供 Ajax AutoComplete Extender。
FontnmsList_AutCpltDataSrc()
所以它必须是static,...除非我将通过另一种方法来实现它...例如Web Service,因为我不想使用,实际上,这无论如何都不是问题。
所以 ... 作为一个静态方法,并且它需要与当前应用程序的其余数据协同工作...不是静态的.. ..这里有点问题..
现在我被建议一般不要使用静态(指的是asp.net),并且在尝试遵循该建议时,
我可以看到,为了允许与之交互... web 方法有点引导我将所有其他应用程序元素/数据类型和方法转换为使用static 修饰符,例如,
这是我在当前项目中遇到的一个示例。
// non static
public SeSn.CurrentSesionVariablsTmplt ExtractSesnVar()
{
SeSn.CurrentSesionVariablsTmplt RetrndAppGlobals = SeSn.GetValueAS.ACloneOfGlobalsObj("_CurrentSesionGlobals");
return (SeSn.CurrentSesionVariablsTmplt)RetrndAppGlobals ;
}
现在这是负责自动完成扩展器的网络方法
public static List<string> FntsList = new List<string>();
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod(EnableSession = true)]
public static List<string> FontnmsList_AutCpltDataSrc(string prefixText)
{
if (ExtrctSesnVar().Fntlist != null)
{
//here too , non of these are , except for the List of course
FntsList = RflectMeths.ClassFldsAsList<fntNams>();
CurrSesnDatabag.Fntlist = FntsList;
SeSn.Modify(Act.Add, App.VarNms._CurrentSesionGlobals, CurrSesnDatabag);
}
else
FntsList = ExtractSesnVar().Fntlist;
return AutoComplete.FromListStr(prefixText, FntsList);
}
因此在内部工作需要非静态ExtractSesnVar()
static 网络方法 FontnmsList_AutCpltDataSrc() 范围。
所以这让我想知道...... 我在这里缺乏什么基本知识(: 我的意思是,当你开始学习 .net 时,你有没有进入过这个路口?
至于 SO A Real Question 中所谓的内容:
作为这种情况的解决方案的解决方法是什么,(它只是一个例子。因为应该有许多其他像这样的“连接点”,你可以想出)
我应该认为应该有某种方式,在这两个实体之间bridge 在写作时我可以考虑传入非静态的数据作为参数,
所以我在这里错过了什么。上面的subjetced代码的正确解决方案是什么?
【问题讨论】:
标签: c# asp.net session-variables static-methods webmethod