ASP.NET: хранить пользовательскую информацию при отправке - PullRequest
2 голосов
/ 29 декабря 2010

Я новичок в asp.net, поэтому мне нужна помощь.

У меня есть такая форма, что данные хранятся в базе данных SQL с использованием Linq.

У меня вопрос, как я могу добавить столбец, который будет содержать всю информацию об отправителе, включая IP-адрес, браузер, реферер и т. Д.

Дело в том, что я хочу сохранить его в одном поле.

Я пришел из знания php, которое я давно забыл, но я все еще помню, что была какая-то команда сериализации, которую можно было запустить в массиве и сохранить в БД, а затем, когда вы захотите вернуть ее в массив. Вы просто запустите команду deserialize, и она вернется к массиву.

так что вы думаете, ребята, лучший способ выполнить это действие?

Заранее спасибо!

1 Ответ

2 голосов
/ 29 декабря 2010

Соберите данные в любую сериализованную форму самостоятельно и сохраните их в столбце БД. Одним из способов может быть использование формата 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.
...