2010-12-29 3 views
2

Je suis un peu nouveau sur asp.net alors j'ai besoin d'aide.ASP.NET: Stockez les informations utilisateur sur soumettre

J'ai cette forme, que les données sont stockées dans une base de données SQL en utilisant Linq.

ma question est, comment puis-je ajouter une colonne, qui aura toutes les informations relatives à l'expéditeur, ce qui signifie adresse IP, navigateur, referrer etc.

la chose est est que je veux stocker dans un champ . Je viens d'une connaissance PHP qui a été oubliée depuis longtemps par moi, mais je me souviens encore qu'il y avait une commande serialize, que vous pouviez exécuter sur un tableau et le stocker dans un db, puis quand vous le voulez revenir à un tableau que vous auriez juste exécuter la commande deserialize et il reviendrait à un tableau. Alors, qu'est-ce que vous pensez que la meilleure façon de préparer cette action est de le faire?

Merci d'avance!

Répondre

2

Assemblez vous-même les données sous une forme sérialisée et enregistrez-les dans la colonne DB. Une solution pourrait être d'utiliser le format xml

var sb = new StringBuilder(); 

sb.Append("<userdata>"); 
sb.Append("<browser>").Append(Request.Browser.Browser).Append("</browser>"); 
sb.Append("<ipaddress>").Append(Request.UserHostAddress).Append("</ipaddress>"); 
sb.Append("<referrer>").Append(Request.UrlReferrer.AbsoluteUri).Append("</referrer>"); 
sb.Append("</userdata>"); 

string SenderData = sb.ToString(); 
// Save the SenderData string to a varchar DB column. 

// The above code only proposes the serialization idea. 
// As commented, it doesn't encode the user values. 
// One of the way to take care of that could be using XmlTextWriter. 

var sb = new StringBuilder(); 

var xtw = new XmlTextWriter(new StringWriter(sb)); 

xtw.WriteStartElement("userdata"); 
xtw.WriteElementString("browser", Request.Browser.Browser); 
xtw.WriteElementString("ipaddress", Request.UserHostAddress); 
xtw.WriteElementString("referrer", Request.UrlReferrer.AbsoluteUri); 
xtw.WriteEndElement(); 

xtw.Close(); 

string SenderData = sb.ToString(); 
// Save the SenderData string to a varchar DB column. 

// Another suggested way 

public class UserData 
{ 
    public string Browser { get; set; } 
    public string IPAddress { get; set; } 
    public string Referrer { get; set; } 

    public UserData() 
    { 
    } 

    public UserData(string browser, string iPAddress, string referrer) 
    { 
     Browser = browser; 
     IPAddress = iPAddress; 
     Referrer = referrer; 
    } 
} 

var userData = new UserData(Request.Browser.Browser, Request.UserHostAddress, Request.UrlReferrer.AbsoluteUri); 

var xmls = new System.Xml.Serialization.XmlSerializer(typeof(UserData)); 
var sb = new StringBuilder(); 
var xtw = new XmlTextWriter(new StringWriter(sb)); 

xmls.Serialize(xtw, userData); 

xtw.Close(); 

string SenderData = sb.ToString(); 
// Save the SenderData string to a varchar DB column. 
+0

Oui, mais le code est un mauvais exemple de la façon de générer du XML (aucune des données fournies par l'utilisateur n'est codée en tant que chaînes XML). – Jacob

+0

mais à quoi bon l'enregistrer en XML? n'est pas une meilleure façon de sérialiser cette information? – natiz

+0

@Jacob - il serait utile de voir un «bon» exemple au lieu de simplement se montrer et de le citer comme mauvais. –

Questions connexes