在WebMethod中访问runat =“server”控件ID

HTML代码是

 function ajaxcall() { $.ajax({ type: "POST", url: "index.aspx/lvimgclick", contentType: "application/json; charset=utf-8", data: JSON.stringify({ value: "test" }), dataType: "json", }); };   // calling script         

.cs代码

 [WebMethod] public static string lvimgclick() { return "hi"; } protected void lvimg1_Click(object sender, EventArgs e) { lvlink1.CssClass = "lv-under"; lvimg1.ImageUrl = "~/images/1.jpg"; lvlink2.CssClass = "lv-under"; lvimg2.ImageUrl = "~/images/spacer.gif"; lvlink3.CssClass = "lv-under"; lvimg3.ImageUrl = "~/images/spacer.gif"; lvlink4.CssClass = "lv-under"; lvimg4.ImageUrl = "~/images/spacer.gif"; } 

想要的是:

 [WebMethod] public static string lvimgclick() { lvimg1_Click(null, null); return "hi"; } 

要么

 [WebMethod] public static string lvimgclick() { lvlink1.CssClass = "lv-under"; lvimg1.ImageUrl = "~/images/1.jpg"; lvlink2.CssClass = "lv-under"; lvimg2.ImageUrl = "~/images/spacer.gif"; lvlink3.CssClass = "lv-under"; lvimg3.ImageUrl = "~/images/spacer.gif"; lvlink4.CssClass = "lv-under"; lvimg4.ImageUrl = "~/images/spacer.gif"; return "hi"; } 

该怎么办? 还必须使用lvimg1_Click(null,null);lvlink1.CssClass =“lv-under1”; 在很多function上都不是webmethod

如果您使用jquery,您可以在下面执行

  $.ajax({ type: "POST", url: "index.aspx/lvimgclick", contentType: "application/json; charset=utf-8", data: JSON.stringify({ value: "test" }), dataType: "json", success:function(result){ if(result.cssclass) { $('#<%= lvlink1.ClientID %>').addClass(result.cssclass); } } }); 

在WebMethod中

  public class CustomResult { public string output{ get; set; } public string cssclass{ get; set; } } [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public static CustomResult lvimgclick() { var result=new CustomResult{output="hi", cssclass="lv-under1"} return result; } 

注意:

有时您可能需要使用d来访问数据,这是由框架添加的。 比如result.d.cssclass

编辑:

如果您想更新多个链接按钮,请在aspx中为其定义一个公共css类。

   

然后在你的ajax调用的成功回调中使用类选择器和更新。

  success:function(result){ if(result.cssclass) { $('a.menu').addClass(result.cssclass); } }