gpt4 book ai didi

c# - 从 WebMethod 调用母版页上的方法

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:54 25 4
gpt4 key购买 nike

或任何可行的解决方法。

因此,想象一个使用方法 ShowFancyMessagePopupTheBusinessCantLiveWithout(string message);

实现 IFooMaster 的母版页

我在继承此母版页的页面中。当一个复选框被取消选中时,我想向用户显示一条消息,如果他们保存它,他们将无法在没有一些管理员操作的情况下重新选中该复选框。

我收到反馈说我不能只在 javascript 中使用 alert('message'); 因为他们想要这些消息的一致外观。

接下来,我尝试通过 PageMethods 进行 ajax 调用(因为这是此代码库中的所有其他内容所使用的)以显示消息。我的问题在于此方法是静态的。

[WebMethod]
public static void ShowSuperImportantMessage()
{
if(!checkboxICareAbout.Checked)
((IFooMaster)Master).ShowFancyMessagePopupTheBusinessCantLiveWithout("If you uncheck that thing, you can't recheck it.");
}

由于ShowSuperImportantMessage()static,我无法从内部访问Master

母版页上的方法大致如下所示:

public void ShowFancyMessagePopupTheBusinessCantLiveWithout(string message)
{
lblGenericMessage.Text = message;
btnGenericMessageOK.Focus();
upGenericMessage.Update();
mpeGenericMessage.Show();
}

mpeGenericMessage 是一个 ajaxtoolkit:ModalPopupExtender。

upGenericMessage 是一个更新面板。

另外两个很明显。

有什么想法吗?我可以做一些 jQuery 功夫来展示这些东西吗?我试过了,但解决方案提示我试图通过 ClientID 引用的控件没有解析,因为它们在母版页上。

快速编辑:在有人告诉我架构有问题之前,或者我不应该把这样的东西放在母版页上,或者...

我知道情况不理想,但我这是继承的代码,我不能全部放弃并重写他们一半的网络堆栈。

最佳答案

尝试这样的事情(未经测试):

((IFooMaster) ((Page)HttpContext.Current.Handler).Master)

这似乎不起作用 - Master 在调用 PageMethod 时未连接(有意义)。

因此,改为使用相同的母版页创建一个空页面。让该页面接受 POST 或 GET 以及您需要传递给母版页方法的任何参数。让 Page_Load 提取参数并调用该方法。然后它应该使用 Response.Write 返回结果(并记住更改 Content-Type)。让您的客户端代码调用页面并获取结果。

关于c# - 从 WebMethod 调用母版页上的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3408977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com