为什么在Context.Response.Write()中显示错误

时间:2017-11-11 06:52:19

标签: c# asp.net json ajax serialization

我是ASP.Net开发的新手,面临将数据从webService发送到webform的问题。我正在使用JSON方法,但在以下代码行中我遇到了问题。编译器显示此错误消息。

  

“错误3无效标记'('在类,结构或接口成员中   声明

有人可以告诉我这是什么问题吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Serialization;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Runtime.Remoting.Contexts;
using System.Runtime.Remoting;

/// <summary>
/// Summary description for GetStudent
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService]
public class GetStudent : System.Web.Services.WebService {

    [WebMethod]
    public GetStudent () {

        //Uncomment the following line if using designed components 
        //InitializeComponent(); 
    }

    [WebMethod]
    public void GetStudent () {
        SqlConnection con = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename='C:\\Users\\Abdul Basit Mehmood\\Documents\\Visual Studio 2012\\WebSites\\WebSite1\\App_Data\\Database.mdf';Integrated Security= True");
        List<StudentsList> stu = new List<StudentsList>();
        con.Open();
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "Select * From Student";
        SqlDataReader DR = cmd.ExecuteReader();
        while (DR.Read())
        {
            StudentsList student = new StudentsList();
            student.Id = Convert.ToInt32(DR["Id"]);
            student.name = DR["name"].ToString();
            student.fname = DR["fname"].ToString();
            student.email = DR["email"].ToString();
            student.contact = DR["contact"].ToString();
            student.Pname = DR["Pname"].ToString();
            student.Cname = DR["Cname"].ToString();
            StudentsList.Add(student);

        }

        JavaScriptSerializer js = new JavaScriptSerializer(StudentsList());
        Context.Response.Write(js.Serializ(StudentsList));
    }


}

1 个答案:

答案 0 :(得分:1)

以下是修复GetStudent方法的方法 -

    [WebMethod]
    public void GetStudent () {
        SqlConnection con = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename='C:\\Users\\Abdul Basit Mehmood\\Documents\\Visual Studio 2012\\WebSites\\WebSite1\\App_Data\\Database.mdf';Integrated Security= True");
        List<StudentsList> stu = new List<StudentsList>();
        con.Open();
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "Select * From Student";
        SqlDataReader DR = cmd.ExecuteReader();
        while (DR.Read())
        {
            StudentsList student = new StudentsList();
            student.Id = Convert.ToInt32(DR["Id"]);
            student.name = DR["name"].ToString();
            student.fname = DR["fname"].ToString();
            student.email = DR["email"].ToString();
            student.contact = DR["contact"].ToString();
            student.Pname = DR["Pname"].ToString();
            student.Cname = DR["Cname"].ToString();
            stu.Add(student); //Changed line: Changed variable name to stu which is the list variable declared earlier.

        }
    JavaScriptSerializer js = new JavaScriptSerializer(); //changed line : Removed the invalid parameter to the constructor of JavaScriptSerializer class
    Context.Response.Write(js.Serializ(stu)); //changed line : Used the correct stu list variable declared at the starting of the method.
}

注意:在为您的课程命名时请务必小心谨慎。您的StudentList实体不是列表,而是具有各种属性的单个学生实体,例如Idnamefname等。请考虑将其重命名为{{1} }。

为了验证您是否从您的数据库中获取了任何无效字符,请首先尝试运行,如果下面的代码工作正常或不正常?

Student

class Program { static void Main(string[] args) { List<StudentsList> stu = new List<StudentsList>(); StudentsList student = new StudentsList(); student.name = "Abdul Basit Mehmood"; student.fname = "Abdul"; stu.Add(student); JavaScriptSerializer js = new JavaScriptSerializer(); var serializedValue = js.Serialize(stu); } } class StudentsList { public string name; public string fname; } 变量应该在快速监视窗口中显示有效的JSON字符串,如下所示:

enter image description here