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

时间:2016-06-18 08:57:29

标签: c# jquery asp.net-mvc asp.net-mvc-4 asp.net-mvc-5

假设我有两种方法action1action2

措施1:

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

        return jsonStudent;

    }

措施2:

   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 个答案:

答案 0 :(得分:1)

Response.Write()实际上向客户端写了一些东西(aspx文档)。它就像PHP的echo一样 - 它只是打印到响应。

另一方面,

return只返回一个值给调用函数。因此,如果您希望打印它(如action2()),则必须打印结果。

基本上,您可以使用以下每种功能打印JavaScriptSerializer

<强>措施1

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

<强>措施2

action2();

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