如何在编辑窗体视图时将绑定数据从 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(或任何其他变量(传递给业务逻辑层,而无需公开它?有没有一种优雅的方法可以将数据绑定到更新的对象,而不是通过文本框?

谢谢!

如何在编辑窗体视图时将绑定数据从 aspx 类传递到 cs 类,而不向用户公开它

由于@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> 

我想你正在寻找 输入类型="隐藏">

这将隐藏用户的输入,并将在回发中可用。 如果用户"查看代码",他们将能够看到它。