0

这可能已经得到解答,但我找不到我要找的东西。

我正在根据用户在表单中输入的数据构建一个简单的 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>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</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 值?

4

2 回答 2

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);
于 2013-11-08T21:52:13.210 回答
1

将您的显示数据和实际业务数据分开。您感兴趣的表格上的值是什么?为它们创建一个包含字段的对象,并将其存储在会话中。Cookies 是为小 ID 而设计的,而不是像您正在使用的数据。意识到每次页面加载都会带来该 cookie。

Session 将信息存储在服务器上,然后使用 cookie 来指示应该从哪个用户检索数据。

于 2013-11-08T21:57:16.637 回答