You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASPx中使用内嵌代码设置CardViewTextColumn的ReadOnly属性不生效问题

问题原因

你用的服务端控件属性绑定语法错误,<% %> 是普通嵌入式代码块,只能输出内容到页面渲染流,不能直接给服务端控件的属性赋值。

解决方案1:使用数据绑定表达式
  • 首先修正前端标记的表达式语法,用数据绑定标记 <%# %> 替代原有的 <% %>,isAdmin() 方法返回 bool 类型即可:
<dx:CardViewTextColumn FieldName="Role" ReadOnly="<%# isAdmin() %>" />
  • 确保 isAdmin() 方法的访问修饰符为 protected 或 public,不能是私有方法,否则前台无法访问。
  • 必须在页面生命周期中触发数据绑定,例如在Page_Load中调用卡片视图的DataBind()方法:
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // 原有CardView绑定数据源的逻辑
        CardView1.DataBind(); // 这步必须执行,否则绑定表达式不会生效
    }
}

protected bool isAdmin()
{
    // 替换为你自己的管理员身份判断逻辑
    return HttpContext.Current.User.IsInRole("Administrator");
}
解决方案2:后台代码直接赋值

如果不想依赖数据绑定,也可以直接在后台代码中找到对应列设置ReadOnly属性:

protected void CardView1_Init(object sender, EventArgs e)
{
    var roleColumn = CardView1.Columns["Role"] as CardViewTextColumn;
    if (roleColumn != null)
    {
        roleColumn.ReadOnly = isAdmin();
    }
}

内容的提问来源于stack exchange,提问作者AlessandroF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:54:05