我是asp.net的新手,所以我需要一些帮助。
我有这种形式,数据使用Linq存储在SQL数据库中。
我的问题是,如何添加一个列,其中包含有关发件人的所有信息,包括IP地址,浏览器,引荐来源等。
问题是我想将它存储在一个字段中。
我来自一个早已被我遗忘的PHP知识,但我还记得有一些序列化命令,你可以在数组上运行并将其存储在数据库中,然后当你想要它回到数组时你只需要运行deserialize命令就会返回一个数组。
那么你们认为采取这一行动的最佳方式是什么?
提前致谢!
答案 0 :(得分:2)
自己以任何序列化形式组装数据并将其保存到DB列。一种方法是使用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.