asp.net webmethod总是返回json格式的数据吗?

4

我有一个常规问题,就是ASP.NET WebMethod是否总是以“json”形式返回数据。如果不是,WebMethod的默认返回数据类型是什么?

我想知道是否有一种方法可以从WebMethod中获取“HTML”而不是“json”的数据?

谢谢

2个回答

2

PageMethods是ASP.NET AJAX框架(ScriptManager)的一部分。

默认情况下,ASP.NET AJAX使用JSON而不是SOAP。

这是有意设计的,主要是因为ASP.NET AJAX Javascript库经过优化,可以处理JSON对象。

您可以通过在Web方法上指定[ResponseFormat]属性来覆盖此默认设置。

像这样:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public XmlElement GetFoo(string url)
{

这里有一篇不错的文章,介绍了PageMethods和启用ASP.NET AJAX的Web服务。


1
非常抱歉回复晚了,感谢您向我推荐这篇文章。据我理解,页面方法只会提供XML或JSON响应,而不会提供其他任何内容。如果我错了,请纠正我。 - kranthi
你是正确的。当我在内部使用时,我总是使用JSON,因为大多数情况下我会在jquery/ajax中使用Web服务。唯一需要使用XML的情况是在创建外部API/Web服务时与JSON一起使用。 - RPM1984

0

谢谢。实际上我没有使用Web服务,而是在我的ASP.NET代码后台页面中编写了一个Web方法,并且我总是以JSON格式查看响应。您能否解释一下原因?以及如何获取“HTML”而不是“JSON”? - kranthi
你能提供一份代码示例吗?你可能还想在页面指令中添加一个内容类型。 - Iain
我有一个叫做[WebMethod]的方法,它的代码如下: public static string sayHello() { return "hello"; }我使用scriptmanager和PageMethods.sayHello组合调用该方法,在firebug中看到响应为{"d":"hello"}。我还尝试将页面指令ContentType设置为'text/html',但仍然得到相同的json响应。 - kranthi
@kranthi - 请查看我上面的答案。FYI - PageMethods仍然是Web服务,只是被称为这样以便在您的JavaScript / AJAX中调用“页面中的方法”的感觉,实际上您正在执行一个启用ASP.NET AJAX的Web服务(在服务器上)。 - RPM1984

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接