C# 从服务器端触发OnClient命令的最佳方法?
我让自己陷入了一个小问题——我不确定在不重新构造代码的情况下是否有一个优雅的出路。我有一个正在运行的服务器端计时器,它需要模拟单击C# 从服务器端触发OnClient命令的最佳方法?,c#,javascript,ajax,C#,Javascript,Ajax,我让自己陷入了一个小问题——我不确定在不重新构造代码的情况下是否有一个优雅的出路。我有一个正在运行的服务器端计时器,它需要模拟单击RadTabStrip的选项卡。 客户端我有以下方法: function OnClientTabSelected(sender, eventArgs) { FixSplitter($find(rightPaneID)); } FixSplitter依赖于一个附加控件,但: function FixSplitter(sender, eventArgs) {
RadTabStrip的选项卡。
客户端我有以下方法:
function OnClientTabSelected(sender, eventArgs)
{
FixSplitter($find(rightPaneID));
}
FixSplitter依赖于一个附加控件,但:
function FixSplitter(sender, eventArgs)
{
var multiPage = $find(multiPageID);
...
}
现在,在服务器端,我有以下内容:
public void DoTimerCycleTick(object sender, TimerEventArgs eventArgs)
{
GlobalSettings globalSettings = StateManager.GetStates<GlobalSettings>();
if( globalSettings.CycleEnabled )
{
if (!Equals(DateTime.Now.CompareTo(globalSettings.TimeLastCycled.AddMinutes(globalSettings.CycleInterval)), -1)) //CompareTo returns -1 when time is earlier than.
{
int nextIndex = SelectedIndex + 1;
if( nextIndex == Tabs.Count)
{
nextIndex = 0;
}
SelectedIndex = nextIndex;
LayoutManager.Instance.MultiPage.SelectedIndex = nextIndex;
LayoutManager.Instance.MultiPageUpdatePanel.Update();
//ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "KEY", "OnClientTabSelected();", true);
globalSettings.TimeLastCycled = DateTime.Now;
}
}
StateManager.SaveGlobalSettings(globalSettings);
}
难道你不能重载FixSplitter方法,一个接受这两个参数的方法,然后用所有3个参数找到并调用另一个方法吗?这样,您可以在需要时随时覆盖多页值
function FixSplitter(sender, eventArgs)
{
var multiPage = $find(multiPageID);
FixSplitter(sender, multiPage, eventArgs);
}
function FixSplitter(sender, multiPage, eventArgs)
{
...
}
如果由于某种原因无法重载,可以使用另一种表示法,如DoFixSplitter。难道不能重载FixSplitter方法吗?该方法接受这两个参数,然后查找并调用另一个方法,并使用所有3个参数?这样,您可以在需要时随时覆盖多页值
function FixSplitter(sender, eventArgs)
{
var multiPage = $find(multiPageID);
FixSplitter(sender, multiPage, eventArgs);
}
function FixSplitter(sender, multiPage, eventArgs)
{
...
}
如果由于某种原因不能重载,可以使用另一种表示法,如DoFixSplitter