我正在使用asp.net 4,C#,VS 2010。 通过调用WebControl作为参数的Web服务方法,我遇到了问题。
/// <summary>
/// Summary description for FormsViews
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class FormViews : System.Web.Services.WebService
{
[WebMethod]
public void SetCaption(System.Web.UI.WebControls.Button bt)
{
//Code...
}
}
它编译没有错误。 在RunTime上,我收到此消息:
命名空间“命名空间”中的XML元素“EnableTheming”已存在于当前范围中。使用XML属性为元素指定另一个XML名称或命名空间。
您能否解释一下为什么webService不接受WebControl以及如何处理这个问题?
答案 0 :(得分:0)
Web服务不接受WebControl,因为它不可序列化,良好的Web服务设计不会直接操作视图或用户界面。视图的逻辑应保留在您的视图中,而不是通常用于业务层。在视图或网页中处理语言支持的典型方法是向Web服务发出指示页面应支持的语言的请求,并返回标签列表作为键/值对。键是控件的ID,值应该是控件中显示的值。只有在您的网页使用大量Ajax时才需要这样做。如果您只是在服务器上呈现页面,则可以在服务器上呈现控件时使用正确的语言填充控件。 Here is an MSDN article讨论了如何执行此操作。