繁体   English   中英

如何从asp.net中的静态方法为文本框设置值?

[英]How to set value to textbox from static method in asp.net?

我有一个应用程序,在该应用程序中,我通过ajax post方法获得一些价值,并将其发送给[WebMethod]静态方法代码。 但是我无法将值分配给页面的文本框。 这是我的代码:

    [WebMethod]
    public static string copyData(string name, string msg, string sing_cal1, string timepick, string timepickst, string sing_cal4, string step)
    {
        if (step == "3")
        {
            if (HttpContext.Current != null)
            {
                Page page = (Page)HttpContext.Current.Handler;
                TextBox txtCampaignNameEditC = (TextBox)page.FindControl("txtCampaignNameEdit");
                TextBox txtMsgEditC = (TextBox)page.FindControl("txtMsgEdit");
                TextBox txtSentFromC = (TextBox)page.FindControl("txtSentFrom");
                Label lblScheduledTimeC = (Label)page.FindControl("lblScheduledTime");


                txtCampaignNameEditC.Text = name; // Here I am getting error as "Object reference not set to an instance of an object."
            }

        }

        return "";
    }

<script type="text/javascript">
    $(document).ready(function () {
        $('#wizard').smartWizard({ onLeaveStep: leaveAStepCallback, onFinish: onFinishCallback });
        function leaveAStepCallback(obj) {
            var step_num= obj.attr('rel');
            var name = $("#<%= txtCampaignName.ClientID  %>").val();
            var msg = $("#<%= txtMessage.ClientID  %>").val();
            var cal1 = $("#<%= single_cal1.ClientID  %>").val();
            var timepicks = $("#<%= txtTimePick.ClientID  %>").val();
            var pickst = $("#<%= txtTimePickST.ClientID  %>").val();
            var cal4 = $("#<%= single_cal4.ClientID  %>").val();
            $.ajax({
                type: "POST",
                url: "CreateCampaign.aspx/copyData",
                data: '{name: "' + name + '", msg: "' + msg + '", sing_cal1: "' + cal1 + '", timepick: "' + timepicks + '", timepickst: "' + pickst + '", sing_cal4: "' + cal4 + '", step: "'+ step_num +'"}',


                contentType: "application/json; charset=utf-8",
                dataType: "json"
            });
            return true;
  }

此方法后面的代码不允许我将接收到的参数分配给文本框。 请帮我。 谢谢。

后面的代码唯一有权访问修改控件的时间是在页面生命周期内。 呈现页面后,该页面将不再连接到服务器。

因为没有控件,所以将引用控件的代码从WebMethod移到另一个函数将无法工作。 您必须从Web方法返回数据,然后使用JavaScript将数据放置在DOM中。

更明确地说,我不能使用[WebMethod]为文本框分配值,因为[WebMethod]不会运行ASP.Net页面生命周期。 您需要使用JavaScript将值分配给文本框。

有关如何使用JavaScript获取和设置文本框值的教程,您可以检查: thisthis

将文本框的ClientIDMode属性设置为Static 这将确保您为文本框设置的任何ID也将成为客户端上的id 这样, id可以预测,您可以从JavaScript引用它。

然后,在执行ajax之后,在客户端代码中可以更新JavaScript中的值。

document.getElementById("yourControlId").value = "whatever";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM