ASP.NET:将用户信息存储在提交中

时间:2010-12-29 19:35:07

标签: asp.net database linq browser ip

我是asp.net的新手,所以我需要一些帮助。

我有这种形式,数据使用Linq存储在SQL数据库中。

我的问题是,如何添加一个列,其中包含有关发件人的所有信息,包括IP地址,浏览器,引荐来源等。

问题是我想将它存储在一个字段中。

我来自一个早已被我遗忘的PHP知识,但我还记得有一些序列化命令,你可以在数组上运行并将其存储在数据库中,然后当你想要它回到数组时你只需要运行deserialize命令就会返回一个数组。

那么你们认为采取这一行动的最佳方式是什么?

提前致谢!

1 个答案:

答案 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.