如何在编辑窗体视图时将绑定数据从 aspx 类传递到 cs 类,而不向用户公开它
本文关键字:cs 用户 视图 窗体 编辑 aspx 数据 绑定 | 更新日期: 2023-09-27 18:34:44
我有一个formview,连接到一个objectDataSource。
这是formview的"EditItemTemplate"中的一个非常简单的代码,在.aspx类中实现:
<EditItemTemplate>
Var1: <asp:TextBox ID="txtVar1" runat="server" Text='<%# Bind("var1") %>' />
Var2: <asp:TextBox ID="txtVar2" runat="server" Text='<%# Bind("var2") %>' />
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="ButtonSave_Click" />
</EditItemTemplate>
当按"保存"时,"var1"和"var2"的数据与对象一起传递到下一个更新方法,该方法在业务逻辑类中实现:
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, true)]
public void UpdateMyObject(MyObject updatedObject)
{
if (updatedObject.EntityState == EntityState.Detached)
mContext.MyObjects.Attach(updatedObject);
mContext.ObjectStateManager.ChangeObjectState(updatedObject, System.Data.EntityState.Modified);
int numberOfAffectedRows = mContext.SaveChanges();
if (numberOfAffectedRows == 0)
throw new DataNotUpdatedException("No object updated!");
}
问题是我需要将第三个变量从 aspx 传递给业务逻辑,而无需通过文本框向用户公开它。这是一个 Guid,无需更改它。使用当前代码,分配给"updateObject"的 Guid 只有零,而不是对象的原始 Guid,如果我使用 <%# 绑定("entryGuid"( %> 将其绑定到文本框,它已经并且会传递。
因此,我的问题是如何将此 Guid(或任何其他变量(传递给业务逻辑层,而无需公开它?有没有一种优雅的方法可以将数据绑定到更新的对象,而不是通过文本框?
谢谢!
由于@tzerb的回答遗漏了一个例子,我想我会提供一个。
<EditItemTemplate>
Var1: <asp:TextBox ID="txtVar1" runat="server" Text='<%# Bind("var1") %>' />
Var2: <asp:TextBox ID="txtVar2" runat="server" Text='<%# Bind("var2") %>' />
Var3: <asp:HiddenField id="hdnVar3" runat="server" Value='<%# Bind("var3") %>' />
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="ButtonSave_Click" />
</EditItemTemplate>
我想你正在寻找 输入类型="隐藏">
这将隐藏用户的输入,并将在回发中可用。 如果用户"查看代码",他们将能够看到它。