asp.net - 在非 ASP 元素中使用代码服务器端脚本分隔符/ASP.NET 内联表达式

标签 asp.net

我收到此错误消息:

Cannot create an object of type 'System.Boolean' from its string representation <%: false %> for the 'Visible' property.

当我尝试在 ASP.net 网站中运行此代码时:

<a runat="server" visible='<%: false %>' href="~/" >Home</a>

有语法错误吗? false 应该可以用任何与以下结果相同的方法替换:

<asp:Panel runat="server" Visible='<%: GetTrueOrFalse() %>'>Home</a>

最佳答案

假设您有一个返回 bool 值的方法,如下所示:

public bool IsVisible()
{
    if (some_condition) // example condition test
    {
        return true;
    }
    else
    {
        return false;
    }
}

您需要像这样使用绑定(bind):

ASPX

<a runat="server" visible='<%# IsVisible() %>' href="~/" >Home</a>

ASPX.CS(代码隐藏)

protected void Page_Load(object sender, EventArgs e)
{
    // do something

    Page.DataBind();
}

注意:此技巧适用于返回 bool 的方法或属性。

更新1:

由于 a 标签未设置任何 id 属性,因此您可以删除 runat="server":

<a visible='<%# IsVisible() %>' href="~/" >Home</a>

或者使用带有 display: nonevisibility: hide 的 CSS:

<a visible='<%# IsVisible() %>' href="~/" style="visibility:hidden; display:none;">Home</a>

引用:

Is code rendering block <%=%> useful for boolean type?

关于asp.net - 在非 ASP 元素中使用代码服务器端脚本分隔符/ASP.NET 内联表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46113412/

相关文章:

c# - 在 ASP.NET 应用程序中将身份验证 token 存储到另一个系统的位置

asp.net - 如何在 LINQ 中从给定的 Sql Server 获取数据库名称

c# - 在 ASP.NET 应用程序中使用 flash api 访问 WebCam

c# - ASP.Net 网站无法重建解决方案也无法发布

asp.net - 登录控件不居中

javascript - html2canvas(document.body) 生成错误 - "Error loading image"

php - 将动态变量插入 HTML 模板...PHP? ASP?冷聚变? MySQL?

c# - 如何使用 C# 将数据从动态添加的行保存到 (csv/txt) 文件到 HTML 表?

asp.net - 在 ASP.NET 5 (vNext) 中使用 "Produce outputs on build"会出现 "Illegal characters in path"构建错误

c# - 在 ASP.NET Web 窗体网站上存储和显示图像