ユーザーが情報を入力して送信するasp.netmvc3の作成フォームを使用して、入力した情報をデータベースに保存しています。作成したばかりのデータベース行で生成されたIDをユーザーに表示したいと思います(正常に送信されたフォームのビューを介して、ID番号は...)。誰かがこれを達成する方法を知っていますか?
2 に答える
あなたの質問にはもう少し詳細が必要ですが、データ永続化戦略を考え出すときに考慮すべきことがいくつかあります。Asp.Netメンバーシッププロバイダーを使用している場合は、それも指定する必要があります。Bildrが指摘したように、ユーザー情報を返す方法はいくつかありますが、MVC4で「シンプルメンバーシッププロバイダー」に置き換えられるため、必要がない限り、そのプロバイダーを使用することはお勧めしません。
リポジトリパターンを使用している場合は、クラスに共通のインターフェイスから継承させることができます。タイプTのエンティティを追加すると、そのエンティティがユーザーに返されますが、保存を実行しても返されません。このアプローチは、WCFサービスなどで境界を越え、複数の子オブジェクトを含む複雑なオブジェクトグラフを渡す場合に便利です。もちろん、もう少し機敏になり、saveメソッドに作成されたオブジェクトのIDを返すようにすることもできます。
public interface IRepository<T>
{
/// <summary>
/// Saves the specified object and returns it back to the user.
/// </summary>
/// <param name="model">The model.</param>
/// <returns>The created class</returns>
T Add(T model);
/// <summary>
/// Persist the specified object.
/// </summary>
/// <param name="model">The model.</param>
void Save(T model);
}
もちろん、より単純なアプリケーションを構築していて、Jimmy Bogardと同じようにリポジトリを超えていて、EntityFrameworkなどのORMを使用している場合は、オブジェクトをコンテキストオブジェクトに渡します(これも参照によるものです)。
var foo = new Foo{ Name="goo"}
_modelContext.MyDBSetFoos.Add(foo);
((ModelContext)_modelContext).SaveChanges();
return foo.Id;
質問を明確にしていただければ、より具体的な情報を提供させていただきます。幸運を!
フォーム認証を使用していて、新しいユーザーの名前を保持できると想定しています。ユーザー名を成功コントローラーに渡し、FindUsersByNameメソッドを使用してモデルにデータを入力します。