发布应用程序时,代码后面的 C# Asp.net Css 类不起作用

Posted

技术标签:

【中文标题】发布应用程序时,代码后面的 C# Asp.net Css 类不起作用【英文标题】:C# Asp.net Css class in code behind does not work when app is published 【发布时间】:2021-05-06 17:06:03 【问题描述】:

我对 ASP.net Framework Webapps 环境还很陌生,遇到了一个问题。

如果我根据 C# 代码中的条件设置一个 Css 类,它就可以正常工作。我将应用程序发布到 IIS 的那一刻不再起作用。为了理智,我还尝试将应用程序发布为调试或发布模式,这没有任何区别。

在页面的page_load事件上加载数据,这里刷新updatepanel。

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    <asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="upcontent">
        <ContentTemplate>
            <div class="jumbotron" style="padding: 5px; background-color: lightgrey; overflow: hidden">
                <div class="card bg-secondary mb-3" style="max-width: 35rem; min-width: 35rem; float: left; overflow: hidden;">
                    <div class="card-header">Work Order Details</div>
                    <div class="card-body">

                        <asp:GridView ID="GVMain" margin-top="10px" runat="server" EmptyDataText="Record is empty" Width="100%" AutoGenerateColumns="true" ShowHeader="false" DataKeyNames="PropertyName" class="table table-hover" OnPageIndexChanging="GVMain_PageIndexChanging" OnRowDataBound="GVMain_RowDataBound" BorderStyle="NotSet" AllowPaging="true" PageSize="10">
                            <PagerSettings Mode="NumericFirstLast" />
                        </asp:GridView>
                    </div>
                </div>
     </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>

代码背后:

        protected void GVMain_RowDataBound(object sender, GridViewRowEventArgs e)
        
            if (e.Row.RowType == DataControlRowType.DataRow)
            
                // Check the XXXX column - if empty, the YYYY needs highlighting!
                if (e.Row.Cells[1].Text == "Mon, 01/01/0001")
                
                    e.Row.Cells[1].CssClass = "text-warning"; // ...so highlight it
                          
            
            upcontent.Update();
        

请协助,请参阅下面的开发环境和部署环境之间的附加图片

Working from Dev Enviroment

Working from Inspect Panel

Not Working when Depoyed on IIS Server

Not Working when Depoyed on IIS Server Inspect Panel

可以帮忙吗?需要注意的一点是,这是来自同一台 PC 上的同一浏览器。

【问题讨论】:

这似乎是一个区域问题。在您的生产服务器上,日期格式使用“-”而不是“/”。 【参考方案1】:

在此示例中,您不清楚实际数据(类型)是什么。但理想情况下,您不想与日期的文本表示进行比较。最好与实际的日期时间进行比较。因此,假设您要绑定的数据是 SomeObject 类型,它具有属性 DateTime 'TheDate',那么您可以在 OnRowBinding 事件中包含以下代码:

if (e.Row.RowType == DataControlRowType.DataRow)

    var value = e.Row.DataItem as SomeObject;
    if (value != null && value.TheDate == DateTime.MinValue)
    
        // do whatever is appropriate

【讨论】:

谢谢,将值转换为 someObject 似乎可以解决问题 很高兴能提供帮助 :) 介意将问题标记为已回答吗?

以上是关于发布应用程序时,代码后面的 C# Asp.net Css 类不起作用的主要内容,如果未能解决你的问题,请参考以下文章

将对象从dll文件传递到文件asp.net c#后面的代码

C# ASP.Net - ListBox - onSelectedIndexChanged 导致错误

从 C# 代码隐藏错误创建 ASP.NET 控件

ASP.NET Web 应用程序消息框

Asp.net 从 asp 中的文本框获取值到代码后面

从asp.net后面的代码中获取锚元素的href属性