有没有人编写过一个可以将aspx页面上的所有控件转换为只读版本的函数? 例如,如果使用UserDetails.aspx编辑和保存用户信息,如果具有不适当权限的人进入该页面,我想将其呈现为只读。 因此,大多数控件将转换为标签,加载来自可编辑原始控件的相应数据。

我认为这可能是一个相当简单的例程,即:

Dim ctlParent As Control = Me.txtTest.Parent  
Dim ctlOLD As TextBox = Me.txtTest  
Dim ctlNEW As Label = New Label  
ctlNEW.Width = ctlOLD.Width  
ctlNEW.Text = ctlOLD.Text  
ctlParent.Controls.Remove(ctlOLD)  
ctlParent.Controls.Add(ctlNEW)  

...实际上你需要一个文本框 - >标签转换,但我希望有人可能知道现有的功能,因为在这里和某些控件和情况可能会有一些陷阱。

更新:
- 只是将ReadOnly属性设置为true不是一个可行的解决方案,因为它看起来很愚蠢,事情就像那样灰白了。 - 避免手动创建辅助视图就是这一点,所以使用巧妙的方式来显示使用标签手工构建的用户界面的只读版本是我想避免的。

谢谢!!

===============>>#1 票数:3

斯科特米切尔不久后发表了一篇很好的文章。

http://aspnet.4guysfromrolla.com/articles/012506-1.aspx

我过去曾使用过这种方法,在“只读”字段中使用css,使它们看起来和工作完全像一个标签,即使它们实际上是文本框。

===============>>#2 票数:2

您可以使用多视图,只需显示视图和编辑视图..然后执行以下任务:

lblWhatever.Text = txtWhatever.Text = whateverOriginatingSource;
lblSomethingElse.Text = txtSomethingElse.Text = somethingElseOriginatingSource;

myViews.SelectedIndex = myConditionOrVariableThatDeterminesEditable ? 0 : 1;

然后根据权限交换视图。

不是最优雅的,但可能适合你的情况。

也许我应该详细说明..解雇psuedo(不确定我是否正确选择了指数yada yada ...但你明白了)。

<asp:Multiview ID="myViews" SelectedIndex="1">
    <asp:View ID="EditView">
        <asp:TextBox ID="txtWhatever" /><br />
        <asp:TextBox ID="txtSomethingElse" />
    </asp:View>
    <asp:View ID="DisplayView">
        <asp:Label ID="lblWhatever" /><br />
        <asp:Label ID="lblSomethingElse" />
    </asp:View>
</asp:Multiview>

===============>>#3 票数:0

使用DetailsView。 它根据页面的当前模式完全符合您的要求。

===============>>#4 票数:0

如何创建自己的控件库,如果ReadOnly为true,则会以不同的方式呈现。 就像是:

MyTextBox : TextBox {
   public override void RenderControl(HtmlTextWriter writer) {
      if (this.ReadOnly) {
          writer.WriteBeginTag("label");
          writer.Write(this.Value);
          writer.WriteEndTag();
      }
   }
}

有一种方法可以使用web.config用您自己的控件替换所有asp:TextBox实例,而无需编辑到我的TextBox - 但我找不到参考ATM。

否则,我可能只是写一个jQuery片段来做它。

===============>>#5 票数:0

我不知道任何现有的功能,但自己处理控件并不困难。 您需要担心的重要一点是控件树中的非ASP.NET控件。 (例如)

您可以将案例控件设置为适当的类型,只检查null,然后正确处理每个控件。

===============>>#6 票数:0

没有创作自己的控件,我担心你不想去的路线(制作第二个,仅标签页面)可能是一条非常好的路线,因为你不希望有人在运行可以编辑的Firebug HTML即时关闭您所拥有的控制权,只需使用该页面就好像他们有权更新它一样。

  ask by tbone translate from so

未解决问题?本站智能推荐:

1回复

将Webform转换为MVC所需的脚本管理器等效项

基本上,我有一个带有脚本管理器的Web窗体和一个按钮,用于更新从类webspider(用于搜索给定URL的损坏链接的网络蜘蛛)返回的结果。 我正在尝试将代码转换为mvc,并实现了大部分功能,但以粗体突出显示的代码除外,因为我在mvc视图中没有脚本管理器,请提供一些有关如何执行此操作的提示,非常
3回复

如何将aspx组合框选定项的值转换为int?

我知道这是非常基本但我失败了。 这是工作 ! 我设定值静态 它不工作!
1回复

将Webform控件转换为Razor语法

我得到了此控件,它运行良好,但是我需要在我的mvc3项目中使用它。 我尝试了一下,但是没有工作。 我希望有一个人可以帮助我。 多数民众赞成在Webform自定义控件代码: ASPX: 代码背后: 此自定义控件继承自webcontrol。 它基本上是一个表。 我尝试
1回复

如何在.aspx webform中将枚举值转换为int(或识别字符串值)

我有一些jquery代码隐藏/显示一些东西,取决于枚举值的下拉值。 这是下拉列表的填充方式: 我无法完成这项工作。 我努力了: 那只是默默地失败了 而不同的变种: 导致js错误 SomeType未定义 使用魔术字符串( "0"和"SomeT
1回复

如何将HTML页面转换为.ASPX页面并向其添加/删除控件而不更改页面布局

你好,我是ASP.NET的新手 我有一个来自另一个程序的设计html页面,我想使用可视化Web开发人员将html转换为asp.net aspx web表单。 我已正常打开页面,但在布局页面中移动或替换控件很困难,例如当我移动按钮时,页面的设计会崩溃。 如何在不改变页面布局的情况下将
2回复

你能将asp.net WebForm控件转换为HTML吗?

我正在寻找一种方法将WebForm控件转换为文本。 是否有可能做到这一点: html将在哪里:
1回复

将datatable转换为json并在aspx中绑定控件

我有一个datatable对象,该对象根据某种条件返回1。 我想是的,我想填补这些datatable从控制值aspx侧。 为此,我想将这些数据表转换为json 。 如何将其转换并绑定到aspx页面? 这是我尝试的代码: UPDATE
5回复

解析aspx文件中的控件并将其转换为xml

我需要解析aspx文件(从磁盘,而不是在浏览器上呈现的文件),并列出页面上存在的所有服务器端asp.net控件,然后从中创建一个xml文件。 这将是最好的方式吗? 此外,有没有可用的库? 例如,如果我的aspx文件包含 <asp:label ID="lbl1" runat="
3回复

由于Web表单中的按钮不起作用,将HTML转换为aspx页面时出现问题

此表单的HTML代码(左侧)如下所示。 我正在尝试将其转换为aspx,并将其后端代码转换为vb.net,如下所示。 问题是我无法将“获取演示”按钮转换为“ asp”按钮。 我尝试了以下方法: 但它就像图片一样变得不可见(右侧形式) 我也尝试过 但
2回复

无法将类型为“ ASP.webform1_aspx”的对象转换为类型为“ System.Web.UI.WebControls.Button”的对象

在浏览器中查看时,出现以下错误:无法将类型为“ ASP.webform1_aspx”的对象强制转换为“ System.Web.UI.WebControls.Button”。 我该如何解决这个问题?