C# ASP.NET MVC-表单提交、检索数据库ID和重定向
我目前正在学习ASP.NETMVC。我想知道当一个表单被提交到数据库时,是否有可能获取新记录的id,然后重定向到一个具有新记录id的新页面 信息输入数据库是正确的,但我不知道如何获取idC# ASP.NET MVC-表单提交、检索数据库ID和重定向,c#,asp.net-mvc,C#,Asp.net Mvc,我目前正在学习ASP.NETMVC。我想知道当一个表单被提交到数据库时,是否有可能获取新记录的id,然后重定向到一个具有新记录id的新页面 信息输入数据库是正确的,但我不知道如何获取id 例如,填写一个新的客户详细信息表单,然后将页面重定向到订单表单,在该表单中可以为客户添加新订单。我问了一个问题:DB层使用什么?这将告诉我们如何更好地回答您的问题 对于重定向,一旦您有了ID,就可以使用: return Redirect(string url); OR RedirectToAction(stri
例如,填写一个新的客户详细信息表单,然后将页面重定向到订单表单,在该表单中可以为客户添加新订单。我问了一个问题:DB层使用什么?这将告诉我们如何更好地回答您的问题 对于重定向,一旦您有了ID,就可以使用:
return Redirect(string url); OR RedirectToAction(string actionPath)
其中url是路径和新id的组合。我有一个问题:DB层使用什么?这将告诉我们如何更好地回答您的问题 对于重定向,一旦您有了ID,就可以使用:
return Redirect(string url); OR RedirectToAction(string actionPath)
其中url是路径和新id的组合。编写查询,使其返回新记录的id并使用新id重定向用户。例如,如果您使用SQL Server并手动编写查询:
command.CommandText = "Insert Into Customers(...) Values (...) Select @@Identity";
long id = long.Parse(command.ExecuteScalar().ToString());
Redirect("...customers/neworders/" + id);
编写查询,使其返回新记录的id,并使用新id重定向用户。例如,如果您使用SQL Server并手动编写查询:
command.CommandText = "Insert Into Customers(...) Values (...) Select @@Identity";
long id = long.Parse(command.ExecuteScalar().ToString());
Redirect("...customers/neworders/" + id);
您如何访问数据库?如果您使用的是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 });
您如何访问数据库?如果您使用的是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 });
不要使用@标识。我建议使用SCOPE_IDENTITY()(SQL Server)谢谢,我不认为上面的内容会起作用,因为我使用的是Nhibernate。@NTulip我不知道这一点。请随意编辑答案并提供更好的建议。不要使用@@IDENTITY。我建议使用SCOPE_IDENTITY()(SQL Server)谢谢,我不认为上面的内容会起作用,因为我使用的是Nhibernate。@NTulip我不知道这一点。请随意编辑答案并提供更好的建议。谢谢,但我如何获取id。我正在使用nhibernate。谢谢,但我如何获取id。我正在使用nhibernate。