我有一个相当复杂的表单(实际上是用户控件),其上有一个文本框控件,不需要回发。有没有办法从帖子中删除控件?是的,此文本框是可编辑的。
更多信息:这是用于信用卡处理表单,因此“最终”提交将发布到另一个网站的页面。但是,在此之前,还有大量的服务器端处理。我知道我可以将信用卡号码文本框移动到另一个页面 - 但这个要求来得很晚,我将不再需要重新做很多事情。
答案 0 :(得分:2)
最简单的方法是使用html输入而不是ASP TextBox。如果未在代码上设置runat="server"
,则无法从代码访问这些内容。
或使用viewstate属性(http://msdn.microsoft.com/en-us/library/system.web.ui.control.enableviewstate.aspx)
答案 1 :(得分:0)
所以情况是你有一个在用户浏览器中呈现的表单,其中一个动作指向另一个站点,你需要确保在提交表单时不会发送其中一个表单域。 / p>
对我来说听起来像你不能在这种情况下绝对确保没有发布该值。有许多不同的可能方法可以使用javascript(在提交前禁用输入,清除值等)解决此问题,但如果关闭脚本,我认为你运气不好。
但是,由于您可以准备将表单发送到其他服务器(更改表单上的操作或使用PostBackUrl启用按钮),我猜您也可以将文本框上的Enabled属性设置为false。这意味着它不能再在最终页面上进行编辑,以便发布到其他服务器。或者你可以隐藏文本框a(所以它根本没有被删除)并将字段显示为标签或文字。
但即使这样,你仍然必须以某种方式确保秘密值不包含在表单的视图状态中。如果您使用标签或文字,它将是什么。还有一个在最后一个回发中被禁用或隐藏的文本框。通常,viewstate只是一个base64编码的字符串,所以从那里找到信用卡号是很容易的。您可以通过在设置表单以便发布到其他服务器之前关闭最后一篇文章中的有问题的控件(甚至是整个页面)的viewstate来解决这个问题。
如果您无法确定哪个是最后一次回发到您的服务器,那么我认为如果没有更多重大更改,您将失去运气。很抱歉是个笨蛋。使用Asp.Net网络表单时,一些看似微不足道的事情很难实现。
也许您可以添加一个单独的页面,只填充您需要发送到其他服务器的数据,并使其具有某种“确认页面”。在该页面中,您可以关闭viewstate,显示汇总的所有数据(使用标签和文字等),并且要发布的实际数据可以作为隐藏字段包含在表单中。然后,当用户“确认”时,该表单将发布到其他服务器。