Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC-表单提交、检索数据库ID和重定向_C#_Asp.net Mvc - Fatal编程技术网

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

C# 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

我目前正在学习ASP.NETMVC。我想知道当一个表单被提交到数据库时,是否有可能获取新记录的id,然后重定向到一个具有新记录id的新页面

信息输入数据库是正确的,但我不知道如何获取id


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

我问了一个问题: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。