我有一个网络方法:
[System.Web.Services.WebMethod] public static string getCharacterstics(int product_id,int lang_id) { // code goes here... }
我想使用PageMethods访问它,例如:
(假设我在ScriptManager中启用PageMethods的条件):
<script type="text/javascript"> $(document).ready( function () { $('#characterstics').html("loading"); // '<%= product_id_property %>','<%= this.LanguageID %>' PageMethods.getCharacterstics(0,OnSave); } ); function OnSave(result) { } </script>
我得到错误“http动词帖子访问路径..是不允许的”
我搜索了它并搜索了SO,但没有得到任何有关它的解决方案基于ASP.NET路由.
我认为,由于asp.net路由,服务方法无法访问.
另外我认为我甚至不能使用JSON,因为asp.net路由也是如此.
任何帮助表示赞赏.
更新:
如果我用这个网址运行页面:
http://localhost:2606/searchdetail.aspx
Web方法已成功执行.
现在
我有这样的路由:
routes.MapPageRoute("searchdetail","searchdetail/{ID}","~/searchdetail.aspx"); routes.MapPageRoute("searchdetail","searchdetail","~/searchdetail.aspx");
set_path()仅适用于案例2,即没有ID,但不适用于案例1
如果我试试
http://localhost:2606/searchdetail
它工作正常
但如果我尝试使用:
http://localhost:2606/searchdetail/123
它给出了对象所期望的错误.
所以set_path()是我应该写的选项.
解决方法
目前,WebMethods不能与Routing框架透明地工作.有一个工作.您必须通过在javascript中执行以下操作直接访问PageMethods:
PageMethods.set_path('/the/path/to/your/page.aspx'); PageMethods.YourMethod(params,onSuccess,onFailure);
我希望这有帮助.