我正在构建一个用户搜索过滤器,我们可以在其中指定一些标准,每个HTML表格一行。
我正在客户端使用jquery构建一个动态表,该表在页面加载时以一行(默认)开始,使用&#34; +&#34;最后一个<td>
上的图像,当我点击它时,我会向表中添加一个新行,这可以重复任意数量的行,如下所示。单击搜索按钮后,我将根据所选标准返回结果。但是我还需要在回发后保留当前的条件表(由于搜索按钮)。
关于如何做到这一点的任何想法?我已经尝试将表的所有HTML放在一个隐藏字段中,但出于明显的安全原因,我得到了一个RequestValidationError。我在隐藏变量中保存的每行中都有各个选定的值,我在后面的代码中使用它来构建搜索并带来结果,我是否需要使用我拥有的值在客户端重建表?这是唯一的选择吗?我也尝试将表格的HTML转换成文本并将其放入隐藏变量中,但我无法在回发后将其转换回HTML,它在表格中呈现为文本,下面是代码,任何感谢帮助/输入。
HTML:
<input type="hidden" runat="server" value="0" id="hdnCriteriaTable" />
jQuery的:
按钮点击,回发前(客户端):
jQuery("[id*=hdnCriteriaTable]").val(jQuery("#dynamicCriteriaTable tbody").html().replace(/</g, "<").replace(/>/g, ">"));
在回发后的页面加载(客户端):
if (jQuery("[id*=hdnispostback]").val() == "1")
{
//commented out lines below are different ways I tried to make it work.
//the one with hardcoded td's is the one that renders perfectly as HTML inside the table
jQuery("#dynamicCriteriaTable>tbody").empty();
var criteriaTableHTML = jQuery("[id*=hdnCriteriaTable]").val().replace("&lt;", /</g).replace("&gt;", />/g).replace(""", "\"");
jQuery.parseHTML(criteriaTableHTML);
//jQuery("#dynamicCriteriaTable>tbody").append(jQuery("[id*=hdnCriteriaTable]").val().replace("&lt;", /</g).replace("&gt;", />/g).replace(""", "\"").toHtml());
//jQuery("#dynamicCriteriaTable>tbody").append("<tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td></tr>")
jQuery("#dynamicCriteriaTable>tbody").append(criteriaTableHTML);
//alert(jQuery("#dynamicCriteriaTable").html());
//jQuery("#dynamicCriteriaTable").toHtml();
}
这就是在表格中呈现HTML的方式:
答案 0 :(得分:2)
如果我是你,我会从价值观重建表格;它很干净,你总是可以编写一个自动构建的功能。
但是,如果你想将它作为HTML传递给 in toto ,那么你需要以某种方式转义你的标签。我首先将<
和>
分别替换为<
和>
,如果仍然给您一个requestValidationError,请使用另一对分隔符。