返回对象和返回响应之间的区别是什么?

3
假设我有两个动作方法action1action2:

Action1:

    public JavaScriptSerializer action1() 
    {
        var student = new Student() { First = "john", Last = "doe" };
        JavaScriptSerializer jsonStudent = new JavaScriptSerializer();
        jsonStudent.Serialize(student);

        return jsonStudent;

    }

Action2:

   public void action2()
    {
        var student = new Student() { First = "john", Last = "doe" };
        JavaScriptSerializer jsonStudent = new JavaScriptSerializer();
        jsonStudent.Serialize(student);

        Response.Write(jsonStudent);
    }

假设我的视图有一个像这样的Ajax调用:
 <script>
     $(function () {

         $.ajax({
             url: 'AjaxCallsTest/action1',
             dataType: 'json',
             success: function (response) {
               //code here
             },
             error: function (response, status, xhr) {
        //code here
             }


         })
     })
 </script>

在这两种情况下,一种是写入到Response对象中,另一种是有一个return语句。我的问题是,即使有return,它是否会将jsonStudent对象添加到Response对象中,如果是的话,那么使用return语句编写操作方法是否毫无意义?
谢谢。
1个回答

1

Response.Write()实际上是向客户端(即aspx文档)写入内容。它的工作方式类似于PHP的echo - 只是将内容打印到响应中。

另一方面,return仅将值返回给调用函数。因此,如果您希望它被打印出来(例如action2()),则需要打印结果。

基本上,以下是如何使用每个函数只打印JavaScriptSerializer

Action1

JavaScriptSerializer a = action1();
Response.Write(a);

Action2

action2();

因此,回答您的问题是,如果您后续不需要代码中的JavaScriptSerializer对象,则返回语句是不必要的。但是,如果您稍后会使用该对象,最好将其返回并存储。

写入 Response 的 outputStream 和通过 Response.Write() 打印到 Response 有什么区别? - cptmemo
老实说,我不确定,但这个链接可能会有所帮助:http://www.hanselman.com/blog/ASPNETResponseWriteAndResponseOutputWriteKnowTheDifference.aspx - Yotam Salmon

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