【发布时间】:2013-06-03 15:57:38
【问题描述】:
我有一个页面有两个用途,主要是查看数据库中的条目,但有些字段显示在 textfields/textareas 中,因为您可以编辑一些值,然后根据您在底部选择的按钮,您可以更新这些条目。我特别喜欢 textarea,因为它的外观/感觉,在页面中自然可调整大小,并带有标准的右键单击选项,如 SelectAll 等。感谢浏览器支持。
无论如何,其中一个字段(显示在文本区域中)我想防止在回发时通过,因为该值不会被编辑(我什至将其设为 @readonly,所以你不能甚至编辑文本区域)。
如何防止来自 ASPX 页面的输入的表单回发?我知道这通常是违反直觉的,但我认为也许有一种类似于隐藏输入的方法。另外,我知道在控制器中我可以在对从表单提交的模型执行任何操作之前擦除模型中的该字段,但我很好奇页面中是否有一些我可以做的选项。
我正在使用这种语法来定义文本区域:
<%: Html.TextAreaFor(model => model.Key, new { @readonly = "readonly", @class = "readonly", cols = 62, rows = 15 })%>
编辑:
我可能应该注意到我需要这样做的主要原因之一是因为其中一个模型字段可能包含一些 HTML。这是一个内部网站,该字段不能手动编辑,所以没有人可以输入 HTML,它只是来自许可证生成程序的数据库中的一个值。因此,当我在绑定到模型字段的表单中使用 TextArea 时,ASP.NET 在将 TextArea 数据绑定回模型以在回发时发送时抛出异常。
我看到了使用 [AllowHtml] 和 [ValidateInput(false)] 属性的 SO 答案,一个在 MVC2 中对我不可用,另一个需要降级 requestValidationMode,所以我正在寻找一种替代方法来防止可能HTML 值根本不会被回发(但仍显示在文本区域中)。
【问题讨论】:
标签: asp.net asp.net-mvc-2 forms http-post