我正在创建一个DotNetNuke 4.x模块,并且我的模块中需要一个AJAX CascadingDropDown。我把它定义如下...
<asp:UpdatePanel runat="server" ID="CascadingDropDowns">
<ContentTemplate>
<asp:DropDownList runat="server" ID="SelectGroupDropDownList">
</asp:DropDownList>
<ajax:CascadingDropDown runat="server" ID="SelectGroupDropDownListExtender" Category="Group"
TargetControlID="SelectGroupDropDownList" PromptText="Select a Group" ServiceMethod="GetGroups">
</ajax:CascadingDropDown>
<!-- more dropdowns & cascadingdropdown extenders here -->在ascx的代码中定义的页面方法如下所示...
[WebService]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService()]
public partial class EligibilityView : PortalModuleBase
{
[WebMethod]
[ScriptMethod]
public CascadingDropDownNameValue[] GetGroups(string knownCategoryValues, string category)
{
var results = new List<CascadingDropDownNameValue>();
// code here to fill the list with values...
return results.ToArray();
}当我运行页面时,我得到了一个“方法错误500”--并且不知道我到底做错了什么。我认为问题在于页面找不到webmethod,因为它是在ASCX控件中定义的,而不是页面本身。我确实需要这样定义它--而不是创建一个ASMX服务--因为这将被编译到一个用于DotNetNuke的模块中,并且我想让模块内部的事情变得简单。
任何建议都将不胜感激。
发布于 2009-02-25 17:57:19
我不认为会有一个简单的方法来访问web服务方法,而它是在ASCX中。在这种情况下,“简单”可能意味着向模块添加一个ASMX。
您认为添加ASMX将是一个问题有什么原因吗?
向模块包中添加另一个文件所涉及的过程应该与添加控件本身所使用的过程相同。在清单中,您只需在文件部分中指定它,然后确保它最终出现在包中。您还可以在包中使用资源压缩文件,只需指定该压缩文件,确保您的.ascx和.asmx文件(以及任何其他内容文件)都在其中。
https://stackoverflow.com/questions/586918
复制相似问题