1

C#とMySQLを使用してasp.netでWebサービスを作成しました。このサービスから複数の値を返したい。私は次のコードを使用しています:

[WebMethod]
public string RegisterUserViaFacebook(string fbid, string fbmailid,string devicetype)  
{
    string success = "Already Registered";
    string id="", name="";

    if (!ExistsFBID(fbid))
    {
        name = GenerateUserName();

        string password = generatePassword(10);

        string insertUser = "Insert into tbl_userinfo(UserName,Password,Facebook_ID,Facebook_EmailID,DeviceType) values";
        insertUser += "( '" + name + "' ,'" + password + "','" + fbid + "','" + fbmailid + "','" + devicetype + "' )";
        con = new MySqlConnection(conString);
        con.Open();
        MySqlCommand cmd = new MySqlCommand(insertUser, con);
        success = cmd.ExecuteNonQuery().ToString();
        con.Close();

        string getID = "SELECT UserID from tbl_userinfo where UserName='" + name + "'  ";
        con = new MySqlConnection(conString);
        con.Open();
        MySqlCommand cmd1 = new MySqlCommand(getID, con);
        id = cmd1.ExecuteScalar().ToString();
        con.Close();


        if (Convert.ToInt16(success) > 0)
        {
            SendMail(fbmailid, name, password);
            success = "New User"  ;
        }
        else
            success = "Error in Insertion";
    }
    else
    {
        string getID1 = "SELECT UserID, UserName from tbl_userinfo where Facebook_ID='" + fbid + "' ";
        con = new MySqlConnection(conString);
        con.Open();
        MySqlCommand cmd2 = new MySqlCommand(getID1, con);
        MySqlDataReader info = cmd2.ExecuteReader();

        while (info.Read())
        {
            id = info.GetString(0);
            name = info.GetString(1);

        }
        con.Close();
    }

    string jsonString = JsonConvert.SerializeObject(success);
    String finalString = "{\"USER IS\":";
    finalString += jsonString;
    finalString += "}";

    string jsonString1 = JsonConvert.SerializeObject(id);
    String finalString1 =finalString + "{\"ID IS\":";
    finalString1 += jsonString1;
    finalString1 += "}" ;

    string jsonString2 = JsonConvert.SerializeObject(name);
    String finalString2 = finalString1 + "{\"NAME IS\":";
    finalString2 += jsonString2;
    finalString2 += "}";
    return finalString2;


 }

ただし、すべての値を1つの文字列で返します。Succeess値を個別に、、IDおよびとして返したいName

これどうやってするの?

4

2 に答える 2

8

Succeess、id、nameを保持し、そのシリアル化されたインスタンスを返す単純なクラスを作成します。

public class RegistrationResult
{
   public string Success { get; set; }
   public string Name { get; set; }
   public int Id { get; set; }
}

あなたはこれを行うことができます:

var result = new RegistrationResult { Success = success, Name = name, Id = id} ;
return JsonConvert.SerializeObject(success);
于 2012-05-30T09:57:01.583 に答える
0

おそらく、JSONで単一のオブジェクトを返したいと思うでしょう。

return "{user: "+JsonConvert.SerializeObject(success)+", id: "+JsonConvert.SerializeObject(id)+", name: "+JsonConvert.SerializeObject(name)+"}";

Odedによる答えも大丈夫です。もう少し明確ですが、追加のクラスも必要です。

于 2012-05-30T10:04:04.287 に答える