防止用户更改asp.net文本框中的某些文本

问题描述:

我有一些用户希望在电子邮件模板中包含付款的截止日期。该电子邮件模板将定期发送给在特定时间段内未支付的用户,直到达到截止日期为止,这意味着电子邮件将不会被发送出去。管理员可以根据需要将截止日期更改为将来的日期,并且电子邮件将自动重新开始。防止用户更改asp.net文本框中的某些文本

管理员还可以编辑电子邮件模板,这是我的问题出现的地方。当他们加载电子邮件模板时,他们当然也能够查看,更改或删除截止日期。如果他们更改格式或删除日期,它将不再能够更新日期,因为它取决于某个日期和格式的一些代码隐藏检查(当他们将期限日期设置为admin时,它将在模板上进行更改)。

是否有可能以某种方式阻止管理员更改电子邮件模板中的截止日期?也许如果你可以在asp:Textbox中插入另一个控件并使其成为只读?或者你有解决我的问题的另一种方法吗?

+0

什么是模板的格式,怎么办用户编辑它? – 2014-08-27 09:35:45

+0

我想说这取决于你如何编辑这样的模板。如果它是一个普通的asp:TextBox然后AFAIK你必须使用另一个只读控件或在[本文]中描述的技术之一(http://*.com/questions/15181417/how-to-make-only -some-text-in-a-text-box-read-only-while-allow-the-rest-to-be)(非常粗糙,我不得不说)。最好的办法是编写一个合适的编辑器(使用JavaScript),但这可能是矫枉过正的。你也可以简单地忽略这个改变,或者不要把它写在模板里(留下一个占位符)。 – 2014-08-27 09:36:35

+0

感谢您的回复。我最终制作了一个标签以供用户在模板中插入。我无法确定它们不会删除标签,但至少现在它会从标签名称中提取日期。 – Ghost 2014-09-10 06:59:40

您可以轻松地用一些编码技巧做法如下:

public partial class Form1 : Form 
{ 
    string origValue = string.Empty; 
    public Form1() 
    { 
     InitializeComponent(); 
     origValue = textBox1.Text; 
    } 
    private void textBox1_TextChanged(object sender, EventArgs e) 
    {    
     if (textBox1.Text.Contains("12/10/2015")) 
     { 
      origValue = textBox1.Text; 
     } 
     else 
     { 
      textBox1.Text = origValue; 
     } 
    } 
}