2017-04-07 77 views
0

When i'm trying to assign value in textbox through webmethod on my page i got this exception获取异常属性

我的HTML代码

<form id="form1" runat="server"><br /><br /> 
<asp:ScriptManager ID="src" runat="server" EnablePageMethods="true"></asp:ScriptManager> 
<asp:UpdatePanel ID="up1" runat="server"> 
    <ContentTemplate>   
     <div class="row"> 
      <div class="col-md-6"> 
       <asp:Button ID="btnChangeMake" runat="server" Text="Change Make" OnClientClick="ChangeMake()"/><br /> 
       <asp:TextBox ID="txtMake" runat="server"></asp:TextBox> 
      </div> 
     </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 

JavaScript代码

function ChangeMake() { 
PageMethods.ChangeMakeText("Devil", onSucess, onError); 
function onSucess(result) { 
    alert(result); 
} 
function onError(result) { 
    alert(result); 
} 

}

C#代码

[WebMethod] 
public static void ChangeMakeText(string DataValue) 
{ 
    if (HttpContext.Current != null) 
    { 
     Page page = (Page)HttpContext.Current.Handler; 
     TextBox txtMake = (TextBox)page.FindControl("txtMake"); 
     txtMake.Text = DataValue; 
    } 
} 

'txtMake.Text = DataValue;'的异常

类型“System.NullReferenceException”的一个例外发生在App_Web_0lr1r3rs.dll但在用户代码中没有处理

其他信息:对象没有设置为一个对象的一个​​实例。

+0

Web方法,我不认为你可以做这样的 –

+0

我如何从JavaScript调用C#方法... – Nishant

+0

您无法访问控件的Web方法,而你可以发送回值在JavaScript中调用方法并将其分配给txtMake – Adil

回答

0

您无法访问web方法中的页面控件,您可以将值发送回javascript中的调用方法并将其分配给txtMake。

C#代码

public static string ChangeMakeText(string DataValue) 
{ 
    //Your code  
    return DataValue; 
} 

JavaScript代码

function ChangeMake() { 
    PageMethods.ChangeMakeText("Devil", onSucess, onError); 
    function onSucess(result) { 
      document.getElementById("<%=txtMake.ClientID%>").value = result; 
    } 
} 

您已经使用Ajax和按钮btnChangeMake UpdatePanel这样绑定click事件(通过双击它在desginer),并更改服务器端的价值点击处理器。

void btnChangeMake_Click(Object sender, EventArgs e) 
{ 
    txtMake.Text = DataValue; 
}