如何在没有WebMethod或Updatepanel的情况下通过javascript调用服务器端c#方法?

时间:2016-01-11 22:25:40

标签: javascript c# jquery asp.net

我不想使用更新面板,并且使用常见的WebMethod方法会导致我使用此代码出现此错误

     private string currentHtml() {
         StringWriter str_wrt = new StringWriter();
         HtmlTextWriter html_wrt = new HtmlTextWriter(str_wrt);
         Page.RenderControl(html_wrt);
         return str_wrt.ToString();
     }

     [WebMethod]
     public static void EmailPtoRequest() {
         string test = currentHtml();
     }
  

错误8非静态字段,方法或属性需要对象引用' PtoRequest.cs.WebForm1.currentHtml()

显然,这种方法是静态的,会引起很多麻烦。

我可以使用这种功能的标准吗?目标是允许用户将其数据发送到服务器,而不会导致发布和刷新页面。

注意:我不想使用webmethod,因为它导致了一个不允许我编译的错误。

     public partial class WebForm1 : System.Web.UI.Page {
     protected void Page_Load(object sender, EventArgs e) {

     }

     private string currentHtml() {
         StringWriter str_wrt = new StringWriter();
         HtmlTextWriter html_wrt = new HtmlTextWriter(str_wrt);
         Page.RenderControl(html_wrt);
         return str_wrt.ToString();
     }

     [WebMethod]
     public static void EmailPtoRequest() {
         WebForm1 WebForm1 = new WebForm1();
         string test = WebForm1.currentHtml();
     }
 }

测试结果'是一个空字符串而不是页面的html。

   private static string currentHtml() {
         StringWriter str_wrt = new StringWriter();
         HtmlTextWriter html_wrt = new HtmlTextWriter(str_wrt);
         Page.RenderControl(html_wrt);
         return str_wrt.ToString();
     }

     [WebMethod]
     public static void EmailPtoRequest() {
         string test = currentHtml();
     }
 }

再次导致第一个错误,但改为使用currentHtml方法。

请记住问题不是关于错误,而是webmethod或更新面板的替代方案。谢谢。

1 个答案:

答案 0 :(得分:1)

3个选项:

  1. 将currentHtml方法设为静态,

  2. 实例化包含currentHtml的类,如下所示:

    new MyClass()。currentHtml();

  3. 使用启用了ajax的wcf服务。