服务器端警报会干扰页面样式
本文关键字:样式 干扰 服务器端 | 更新日期: 2023-09-27 18:33:56
>我需要在网页上显示一条消息。 我正在使用 ASP.Net 和C#。 我在后端代码中添加了以下代码以向用户显示消息
protected void btnRenew_Click(object sender, ImageClickEventArgs e)
{
//other code removed for clarity on where and how this alert is triggered
if (newExpiryDate.Date == memberDetails.ExpiryDate.Date)
{
Response.Write("<script>alert('Invalid renewal date');</script>");
}
}
这在事件调用上按预期工作正常。 但是,当我单击警报消息上的OK
按钮时,文本的字体大小会增加。 看起来这条警报消息以某种方式扰乱了我在页面上的样式。
有谁知道一种安全的方法来显示来自页面隐藏代码 ASP.Net 警报?
很难根据您发布的内容判断是什么导致了字体偏移,但是您的设计可以大大改进1.不要仅仅为了验证日期而进行服务器调用,以及2.不使用alert()锁定整个浏览器,直到有人单击"确定"。
您可以更改方法,在页面加载时在javascript中设置一些变量,然后在更改输入甚至单击按钮时触发函数。 您的检查功能可能如下所示
_memberExpiryDate = new Date('@memberDetails.ExpiryDate.Date'); // or whatever the notation is to write out server variable here
function validate() {
if (new Date($('#myDateInput').value()) >= _memberExpiryDate.getTime()))
$('#invalidDateLabel').show();
}
这样,您就不会进行不必要的回发,验证可以在用户调整日期时自动更正,并且您的脸上没有警报。
您还可以使用 Toastr 等库来显示更优雅的消息,该消息会在几秒钟后消失。 但理想情况下,您希望在输入字段旁边显示一些内容 asp.net 例如日期验证器
toastr.error('date is expired');
您也可以只使用 asp.net 范围验证器。
看看是否
<script>setTimeout(function(){alert('Invalid renewal date');},1000);</script>
解决您的问题
使用 ClientRegisterScriptBlock
protected void btnRenew_Click(object sender, ImageClickEventArgs e)
{
//other code removed for clarity on where and how this alert is triggered
if (newExpiryDate.Date == memberDetails.ExpiryDate.Date)
{
ClientScript.RegisterClientScriptBlock
("".GetType(), "s", "<script>alert('Invalid renewal date');</script>");
}
}
这将在 HEAD 部分中呈现脚本