【发布时间】:2017-06-16 09:47:35
【问题描述】:
我有一个按如下方式执行回发的按钮:
default.aspx
<asp:LinkButton ID="LinkButton1" CssClass="print" runat="server" PostBackUrl="Default.aspx" OnClick="ExportTaxInfoToPDF">Print</asp:LinkButton>
default.aspx.cs
protected void ExportTaxInfoToPDF(object sender, EventArgs e)
{
...
我想将一个 javascript 计算值传递给代码隐藏(例如$('#taxTable').html(),即我想将该计算的值绑定到EventArgs e,以便我可以在服务器端检索它)我该怎么做还是有更好的方法来实现?
谢谢
编辑:
按照 Tetsuya Yamamoto 的建议,我现在有以下代码:
<asp:HiddenField ID="TaxTableData" runat="server" Value="" />
<asp:LinkButton ID="PrintButton" CssClass="print" runat="server" PostBackUrl="Default.aspx" OnClick="ExportTaxInfoToPDF">Print</asp:LinkButton>
只要直接使用表格的 HTML 打开包含数据(表格格式)的弹出窗口,就会填充 TaxTableData:
$("#ctl00_maincontent_TaxTableData").val($table[0].outerHTML);
然后使用 iTextSharp 将 HTML 转换为 PDF。就是一个简单的html<table>:
<table>
<thead>
<th>...</th>
...
</thead>
<tbody>
..
我想知道是否有更好的方法将数据传输到服务器端,例如不强制禁用安全检查?有没有办法序列化表格并在另一边反序列化它?
【问题讨论】:
-
您可以使用隐藏字段(普通 HTML
input type="hidden"或asp:HiddenField服务器控件)并使用Request.Form["taxTable"](或ClientID,如果正在使用服务器控件)来检索客户端值. -
谢谢,这成功了。虽然,我在尝试传递 HTML 时遇到错误(从客户端检测到潜在危险的 Request.Form 值)你知道传递 HTML 的最佳方法是什么?
-
尝试在 Web 配置中使用
<httpRuntime requestValidationMode="2.0" />和<pages validateRequest="false" />,在 ASPX 页面中使用<%@ Page ValidateRequest="false" %>。哪个字符触发了Request.Form错误? -
感谢您的帮助。这行得通。我猜是
<字符(错误消息说:<table style="...)。首先传递 html 可能是个坏主意,但暂时禁用此检查即可。 -
我更喜欢将 HTML 标记转换为其他格式(例如 JSON),然后将其传递到后面的代码中以防止出现
Request.Form错误,然后在流程逻辑中序列化接收到的数据并随后呈现结果。您可以编辑问题以提供您想要传递的数据格式,我可以在详细答案中提供执行此操作的步骤。
标签: javascript c# asp.net postback