我有一个连接到 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,无需更改它。使用当前代码,分配给“updatedObject”的 Guid 只是零,而不是对象的原始 Guid,如果我使用 <%# Bind( "entryGuid") %>。
所以,我的问题是如何将这个 Guid(或任何其他变量)传递给业务逻辑层,而不需要公开它?有没有一种优雅的方法可以不通过文本框将数据绑定到更新的对象?
谢谢!