我目前正在学习ASP.NET MVC。我想知道是否有可能将表单提交到获取新记录的ID然后重定向到具有新记录ID的新页面?
信息正确输入数据库,但我不确定如何获取ID?
例如,填写新的客户详细信息表单,然后将页面重定向到订单表单,以便为客户添加新订单。
答案 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);