ASP.NET MVC - 表单提交,检索数据库ID和重定向

时间:2009-02-19 14:19:54

标签: c# asp.net-mvc

我目前正在学习ASP.NET MVC。我想知道是否有可能将表单提交到获取新记录的ID然后重定向到具有新记录ID的新页面?

信息正确输入数据库,但我不确定如何获取ID?

例如,填写新的客户详细信息表单,然后将页面重定向到订单表单,以便为客户添加新订单。

3 个答案:

答案 0 :(得分:4)

您是如何访问数据库的?如果您正在使用ORM(例如NHibernate或LINQ to SQL),则在将对象插入数据库后,该对象应该更新它的ID属性。

如果您正在手动滚动SQL,那么您需要在与插入相同的语句中执行select:

insert into ...

select scope_identity()

这将返回您刚刚创建的行的ID。

然后你可以在你的行动中做到这一点:

return RedirectToAction("YourActionName", new {id});

从保存的对象或SQL的返回值中检索ID。适合您的情况。

修改

正如您所提到的,您正在使用NHibernate,那么您可以这样做:

var myNewObject = // some way of creating the object

// some way of saving the object 
// at this point NHibernate will have set the ID of the object for you

return RedirectToAction("YourActionName", new { id = myNewObject.Id });

答案 1 :(得分:0)

我提出的一个问题:你对数据库层使用了什么?这将告诉我们如何更好地回答您的问题。

对于重定向,一旦您拥有了ID,就可以使用:

return Redirect(string url); OR RedirectToAction(string actionPath)

其中url是路径和新ID的组合。

答案 2 :(得分:0)

编写您的查询,以便它返回新记录的ID并使用新ID重定向用户。对于例如如果您使用的是SQL Server并手动编写查询:

command.CommandText = "Insert Into Customers(...) Values (...) Select @@Identity";
long id = long.Parse(command.ExecuteScalar().ToString());
Redirect("...customers/neworders/" + id);