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からビジネスロジックに3番目の変数を渡す必要があるということです。これはGUIDであり、変更する必要はありません。現在のコードでは、「updatedObject」に割り当てられるGuidはゼロのみであり、オブジェクトの元のGuidではなく、<%#Bind(を使用してテキストボックスにバインドした場合に渡されます。 "entryGuid")%>。
それで、私の質問は、このGuid(または他の変数)を公開せずにビジネスロジックレイヤーに渡すにはどうすればよいですか?テキストボックスを介さずに、更新されたオブジェクトにデータをバインドするエレガントな方法はありますか?
ありがとう!