2012-11-09 17 views
0

我正在使用asp.net mvc 3创建表单,用户输入信息并提交,以将其类型化信息保存到数据库。我想向用户显示他们刚刚创建的数据库行生成的Id(通过成功提交表单的视图,您的ID号是...)。有谁知道一种方法来完成这个?使用Asp.Net MVC向用户显示生成的Id 3

+0

你用什么ORM来访问你的数据库? –

+0

对不起尼古拉斯我对编程世界很新,不太清楚你的意思。我正在使用实体框架与SQL Server,如果你可以详细说明我可以更好地回答你。 – WiseGuy

+0

没关系 - EF是[ORM](http://en.wikipedia.org/wiki/Object-relational_mapping)。你想获得新数据库行的主键ID吗?如果是这样,当您调用'SaveChanges'时,EF会为您设置它 - 请参阅@James答案的结尾。 –

回答

1

您的问题需要更多的细节,但是在提出数据持久性策略时应该考虑几件事情。如果您使用Asp.Net成员资格提供程序,则还需要指定。有些方法可以像Bildr指出的那样返回用户信息,但我不建议使用该提供程序,除非您需要在MVC4中用“简单成员提供程序”替换它。

如果您使用存储库模式,则可以让类从一个通用接口继承。当你添加一个T类型的实体时,它会将该实体返回给用户,当你执行保存时它不会。这种方法在您跨越边界时派上用场,比如使用WCF服务,并且您正在传递包含多个子对象的复杂对象图。你当然可以更灵活一点,并且你的保存方法只需返回创建的对象的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); 
} 

当然,如果你正在构建一个简单的应用程序,你是as over repositories吉米·博加德是,并使用ORM,如的EntityFramework,那么你会通过你的对象(再次,它通过参考)对上下文对象:

var foo = new Foo{ Name="goo"} 
    _modelContext.MyDBSetFoos.Add(foo); 
    ((ModelContext)_modelContext).SaveChanges(); 
    return foo.Id; 

如果你澄清你的问题,我很乐意提供更多的细节。祝你好运!

+0

谢谢你的回答,帮了我很多 – WiseGuy

0

我假设您使用表单身份验证,您可以保留新用户的名称。将用户名传递给成功控制器,并使用FindUsersByName method填充模型。