这可能已经得到解答,但我找不到我要找的东西。
我正在根据用户在表单中输入的数据构建一个简单的html表。我需要将这些数据通过电子邮件发送给他们并显示在另一个页面上,但是,我们不会将其保存到数据库中。
为了解决这个问题,我决定将html字符串存储在cookie中,然后在需要它的页面上读取该cookie。
然而,cookie的价值被截断,我不知道为什么。这就是我所拥有的:
string str = "";
str += "<p>Please print this form and send it with your repair.<br /><b>INSTRUMENT REPAIR FORM</b><p>";
str += "<table style='width: 800px'>";
str += "<tr><td>CUST #</td><td>" + txtCustomerNum.Text + "</td><td>NAME & ADDRESS</td><td>" + txtName.Text + "</td></tr>";
str += "<tr><td> </td><td> </td><td> </td><td>" + txtAddress.Text + "</td></tr>";
str += "<tr><td>PHONE</td><td>" + txtPhone.Text + "</td><td>AUTHORIZED BY</td><td>" + "________________________" + "</td></tr>";
str += "</table>";
HttpCookie myCookie = new HttpCookie("InsRepairFormCookie");
myCookie.Value = str;
Response.Cookies.Add(myCookie);
当我读取cookie时,它会在800px;
之后被截断。如何将整个字符串存储为cookie值?
答案 0 :(得分:1)
使用StringBuilder可能是个好主意。它节省了内存,并且只创建了一个字符串,因为此方法为每个+ =创建至少2个字符串。只有一个字符串才能解决你所面临的问题,尽管按照Esteban的建议对其进行编码并不是一个坏主意。
StringBuilder str = new StringBuilder;
str.Append("<p>Please print this form and send it with your repair.<br /><b>INSTRUMENT REPAIR FORM</b><p>");
str.Append("<table style='width: 800px'>");
...
HttpCookie myCookie = new HttpCookie("InsRepairFormCookie");
myCookie.Value = str.ToString();
Response.Cookies.Add(myCookie);
答案 1 :(得分:1)
分隔您的显示数据和实际业务数据。您感兴趣的表格上有哪些价值?创建一个包含字段的对象,并将其存储在会话中。 Cookie专为小型ID而设计,而不是您使用的数据。意识到每个页面加载都会带来那个cookie。
会话将信息存储在服务器上,然后使用cookie来指示应从哪个用户检索数据。