를 호출하려면 어떻게 해야 하나요?자바스크립트 함수 안에서는 방법?

StackOverflow https://stackoverflow.com/questions/153776

  •  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...질문에 극적으로 변화 이후에 원래의 대답이다.

지금 나는 생각한 답은 없습니다.하지만 내가 틀렸다는 것에 동의합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top