服务器端警报会干扰页面样式

本文关键字:样式 干扰 服务器端 | 更新日期: 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 部分中呈现脚本