簡體   English   中英

來自javascript的值未在Visual Web GUI中的應用程序中返回c#

[英]value from javascript is not returning to c# in the application in Visual Web GUI

我已經在可視Web Gui應用程序的外觀文件中編寫了Java腳本函數,該函數也返回了一些值。 現在,我從后面的代碼中調用Java腳本方法。

public void XYZ( string message)
    {
        this.InvokeMethodWithId("testCall", message);
    }

而javascript函數是:-

function testCall(strGuid, txt) {

    alert("hai Java script fired..");
    return txt+ 'returned from JavaScript';
}

我想要在應用程序中從JavaScript返回的值。 我怎樣才能做到這一點。 是否有其他方法可以調用JavaScript方法?

我想要這樣的東西:-

public void Conect( string message)
        {
          string returnedvalue =  this.InvokeMethodWithId("testCall", message);
        }

Javascript是在客戶端上執行的,因此返回值不會到達服務器。

一種解決方案是使用AJAX將該值發送到服務器。 Stack Overflow充滿了有關AJAX的答案。

這是一個很好的例子

@阿米什·庫瑪(Amish Kumar),

如其他答復所述,在Web編程中,客戶端和服務器端未直接連接。 客戶端始終是每個請求的發起者,服務器端的“目的”是呈現響應,然后將其返回給客戶端進行處理,在Visual WebGui中,這通常是一些UI更新處理。 從根本上講,這意味着您的客戶端腳本將在服務器端完成呈現響應之前不執行,並且客戶端可以將一些消息返回給服務器的唯一方法是發出另一個請求。

例如,考慮一下您需要如何在Visual WebGui中使用MessageBox。 為了從MessageBox接收“響應”,您需要在服務器端代碼中提供一個回調處理程序,然后您的服務器端代碼將完成創建響應,並將其返回給客戶端。 客戶端更新其UI,並在某些操作上將其更新到MessageBox對話框,它將新請求發送到服務器,服務器將解釋該操作並調用您的回調處理程序。 在回調處理程序中,您可以使用Form.DialogResult獲取用戶操作。

在自定義Visual WebGui代碼中完成此工作的非常基本的方法可能類似於Form上的以下代碼:

    private void button1_Click(object sender, EventArgs e)
    {
        SendClientMessage("This is a test");
    }

    public void SendClientMessage(string strMessage)
    {
        System.Text.StringBuilder sb = new StringBuilder();
        sb.AppendLine("var objEvent = mobjApp.Events_CreateEvent('{0}', 'MessageEvent');");
        sb.AppendLine("mobjApp.Events_SetEventAttribute(objEvent, 'Msg', '{1}');");
        sb.AppendLine("mobjApp.Events_RaiseEvents();");

        this.InvokeScript(string.Format(sb.ToString(), this.ID, strMessage));
    }

    protected override void FireEvent(Gizmox.WebGUI.Common.Interfaces.IEvent objEvent)
    {
        if (objEvent.Type == "MessageEvent")
            MessageBox.Show(objEvent["Msg"]);
        else
            base.FireEvent(objEvent);

    }

除非您將Visual WebGui應用程序設置為無遮擋,否則此代碼將不起作用。 為了使此代碼在模糊的應用程序上運行,您需要將JavaScript添加為模糊的JavaScript資源,然后才能正常工作。

帕利

enter code here

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM