【问题标题】:Javascript prompt saved to variable in c# with same button clickJavascript提示保存到c#中的变量,单击相同的按钮
【发布时间】:2019-02-22 19:09:48
【问题描述】:

我正在尝试使用 Javascript 来提示输入变量,然后将其传递给 C#。我在这里有read 几篇文章,介绍了如何做到这一点的最佳方法是通过隐藏字段并获得价值。这单独工作很好,但在 C# 方法中传递(我也读过here),我可以在同一个点击事件上运行 JS 函数和 C# 方法。同样,当我将它们分开时,这很好用,但是当它们一起完成时,值总是 ""。这是我的代码。

Javascript:

function ScheduleName() {
        var inputName = prompt("Schedule name");
        if (inputName.length === 0) {
            alert("Please enter a name.");
            return false;
        }
        document.getElementById('<%=sptext.ClientID %>').innerHTML = inputName;
    }

<asp:Button ID="btnSaveSchedule" OnCLientClick="ScheduleName(); return false;" onclick="btnSaveSchedule_Click" class="btn btn-info" runat="server" Text="Save Schedule"/>

<span id="sptext" runat="server" visible="False"></span>

C#

 protected void btnSaveSchedule_Click(object sender, EventArgs eventArgs)
{
   string scheduleName = sptext.InnerHtml;
}

至少这些是代码的相关部分。我尝试在 Javascript 中调用 C# 方法( function JSFunction() { <%#ProjectName.Csharp.CsharpFunction()%> ; }

我也尝试过 AJAX。我遇到了一些我的方法不是静态的问题。也许我只是度过了一段艰难的时光,或者我真的没有在这里得到一些基本的东西。我多年来一直在使用 Javascript 编程,但对 C# 还是很陌生。谢谢。

【问题讨论】:

    标签: javascript c# asp.net onclick


    【解决方案1】:

    你一路走好。

    首先,将span 替换为HiddenField,因为span 的内容不会包含在发送到服务器的回发数据中。

    <asp:HiddenField runat="server" ID="sptext" />
    

    在您的 JavaScript 中设置此 HiddenFieldvalue

    function ScheduleName() {
        var inputName = prompt("Schedule name", "");
        if (inputName.length === 0) {
            alert("Please enter a name.");
            return false;
        }
        document.getElementById('<%=sptext.ClientID %>').value = inputName;
        return true;
    }
    

    确保通过ButtonOnCLientClick 处理程序返回TrueFalse,具体取决于给定输入是否有效;使用客户端脚本的返回值。仅当此脚本返回 True 时才会发生回发。

    <asp:Button ID="btnSaveSchedule" OnCLientClick="return ScheduleName();" onclick="btnSaveSchedule_Click" class="btn btn-info" runat="server" Text="Save Schedule"/>
    

    在服务器端,读取HiddenField 的值。

     protected void btnSaveSchedule_Click(object sender, EventArgs eventArgs)
     {
         string scheduleName = sptext.Value;
     }
    

    【讨论】:

    • 谢谢,不知道 HiddenField 与 span 的关系。这现在对我有用,我真的很感激。
    猜你喜欢
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多