를 호출하려면 어떻게 해야 하나요?자바스크립트 함수 안에서는 방법?
-
03-07-2019 - |
문제
나는 내부의...
public class bgchange : IMapServerDropDownBoxAction
{
void IServerAction.ServerAction(ToolbarItemInfo info)
{
Some code...
후에"일부 코드는"내가 원하는 트리거
[WebMethod]
public static void DoSome()
{
}
을 트리거하는 일부 javascript.이것이 가능한가요?
Ok,스위치는 방법을 여기에.할 수 있었을 통 dosome();는 발생하지 않았지만 방 javascript.을 사용하여 registerstartupscript 방법 하지만 완전히 이해할 수 없는 방법을 구현합니다.여기에 무엇을 했:
public class bgchange : IMapServerDropDownBoxAction
{
void IServerAction.ServerAction(ToolbarItemInfo info)
{
...my C# code to perform on dropdown selection...
//now I want to trigger some javascript...
// Define the name and type of the client scripts on the page.
String csname1 = "PopupScript";
Type cstype = this.GetType();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegistered(cstype, csname1))
{
String cstext1 = "alert('Hello World');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true);
}
}
}
나 registerstartupscript 코드에서는 msdn 예입니다.명확하게 나지 않을 구현하게 됩니다.현재 vs"라는 객체 참조를 위해 필요한 정적이 아닌 필드 방법,또는 재산'시스템이다.웹.UI.페이지입니다.ClientScript.을 얻을'참조하는 부분의 코드"페이지를 참조하십시오.Clientscript;"감사합니다.
해결책
나는 확실하지 않다 나는 완전히 이해의 순서 어떤 노력을 해야할지,어떻의 클라이언트 측면 무엇을 하지 않습니다....
그러나를 추가할 수 있습니다 시작 javascript 방법을 이 페이지는 다음 전화 WebMethod.를 호출할 때 WebMethod 자바 스크립트를 통해 추가할 수 있습니다 콜백 함수는 다음을 호출될 때 WebMethod 반환합니다.
를 추가하는 경우 ScriptManager 태그에서 당신의 페이지를 호출할 수 있습 WebMethods 에 정의된 페이지를 통해 자바 스크립트.
<asp:ScriptManager ID="scriptManager1"
runat="server" EnablePageMethods="true" />
에서 Page_Load 함수 호출을 추가할 수 있습니다 당신의 WebMethod..
Page.ClientScript.RegisterStartupScript(
this.GetType(),
"callDoSome",
"PageMethods.DoSome(Callback_Function, null)",
true);
Callback_Function 나타내는 자바스크립트 함수가 실행될 것입 후 WebMethod 라고...
<script language="javascript" type="text/javascript">
function Callback_Function(result, context) {
alert('WebMethod was called');
}
</script>
편집:
이 링크 웹 ADF 컨트롤.이것이 당신이 무엇을 사용하고 있습니까??
해당 페이지에서,그것은 다음과 같이 같은 것을 할 것입니다 javascript 콜백입니다.
public void ServerAction(ToolbarItemInfo info) {
string jsfunction = "alert('Hello');";
Map mapctrl = (Map)info.BuddyControls[0];
CallbackResult cr = new CallbackResult(null, null, "javascript", jsfunction);
mapctrl.CallbackResults.Add(cr);
}
다른 팁
위은 어떻게 당신을 호출하는 RegisterStartupScript,그것은 작동하지 않을 것이 없기 때문에 참조로"페이지의"개체입니다.
bgchange 예에서 확장체(가정 IMapServerDropDownBoxAction 인터페이스)를 의미 없다는 것 페이지에 인스턴스에 대한 당신을 참조합니다.
이았다 똑같은 일부터 Asp.Net 페이지 정렬,그것은 작품이기 때문에,페이지의 것 유효한 참조.
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(
this.GetType(),
"helloworldpopup",
"alert('hello world');",
true);
}
}
를 호출할 수 없는 방법에 직접 브라우저에서 서버입니다.당신은 할 수 있습니다,그러나,추가바 스크립트 기능에 응답하는 것이 실행 방법에 브라우저입니다.
내 ServerAction 방법이 다음을 수행합니다
string script = "<script language='javascript'>\n";
script += "javascriptFunctionHere();\n";
script += "</script>";
Page.RegisterStartupScript("ForceClientToCallServerMethod", script);
hmmm...질문에 극적으로 변화 이후에 원래의 대답이다.
지금 나는 생각한 답은 없습니다.하지만 내가 틀렸다는 것에 동의합니다.