从JavaScript调用代码隐藏(Calling Code-behind from Javascr

2019-06-24 14:38发布

在按钮的点击,我调用JavaScript函数。 所获得的价值后,我需要从代码隐藏所得的值进行一些东西。 我应该如何调用代码隐藏?

我的aspx:

function openWindow(page) {
  var getval = window.showModalDialog(page);
  document.getElementById("<%= TxtInput.ClientID %>").value = getval; 
  //After this I need to perform stuff 'Upload(TxtInput.value)' into database from the code-behind
}

调用功能键被设置在以下方式:

<button class="doActionButton" id="btnSelectImage" runat="server" onclick="openWindow('../rcwksheet/popups/uploader.htm')">Select Image</button>

我期望后面的代码(VB):

Public Sub btnSaveImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelectImage.ServerClick
  Dim inputFile As String = Me.TxtInput.Value
  //do more stuff here
End Sub

所以:

  1. 有没有办法从JavaScript调用代码隐藏?
  2. 我能以某种方式使用一个按钮的“点击”属性先去一个JavaScript,然后到代码隐藏?
  3. 触发代码隐藏调用TxtInput.Value的“平变化”?

Answer 1:

是的,有一种方式。

首先,你可以使用JavaScript的返回值被设定后提交表单TxtInput

function openWindow(page) {
  var getval = window.showModalDialog(page);
  document.getElementById("<%= TxtInput.ClientID %>").value = getval; 
  document.forms[0].submit();
}

然后在后面的代码,您可以处理TxtInput的页面加载事件的价值。

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        if (this.Input.Value != string.Empty)
        {
            this.Input.Value += "blah";
        }
    }
}

注意:您可能需要引起回传识别控制



Answer 2:

你可以把服务器端代码转换成Web服务,使在ASP服务引用:你的aspx页面上的ScriptManager,然后你可以调用/通过从JavaScript调用执行Web服务:

WebServiceClassName.MethodName(javascriptvariable, doSomethingOnSuccess)

这里是做一个链接:

http://msdn.microsoft.com/en-us/magazine/cc163499.aspx



Answer 3:

您可以拨打__doPostBack事件。

function openWindow(page) {
  var getval = window.showModalDialog(page);
  document.getElementById("<%= TxtInput.ClientID %>").value = getval; 
__doPostBack('btnSelectImage', getval);
}

而在后面的代码在服务器端,你可以得到的值:

在pageLoad的方法:

if (Request.Form["__EVENTTARGET"] == "btnSelectImage")
{
    //get the argument passed
    string parameter = Request["__EVENTARGUMENT"];
    //fire event
    btnSaveImage_Click(this, new EventArgs());
}


文章来源: Calling Code-behind from Javascript