0

我正在使用 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...
    }
}

它编译没有错误。在运行时我收到此消息:

命名空间“namespace”中的 XML 元素“EnableTheming”已存在于当前范围中。使用 XML 属性为元素指定另一个 XML 名称或命名空间。

您能否解释一下为什么 webService 不接受 WebControl 以及如何处理这个问题?

4

1 回答 1

0

Web 服务不接受 WebControl,因为它不可序列化,并且良好的 Web 服务设计不会直接操作视图或用户界面。您的视图的逻辑应该留在您的视图中,而不是通常的业务层中。在视图或网页中处理语言支持的典型方法是向 Web 服务发出请求,该请求指示页面应支持的语言,并以键/值对的形式返回标签​​列表。键是控件的 ID,值是控件中应显示的内容。仅当您的网页使用大量 Ajax 时才需要这样做。如果您只是在服务器上呈现页面,那么当控件在服务器上呈现时,您可以使用正确的语言填充控件。这是一篇 MSDN 文章,讨论了如何执行此操作。

于 2012-09-19T13:01:36.530 回答