ASP.NET MVC - отправка формы, получение идентификатора базы данных и перенаправление - PullRequest
1 голос
/ 19 февраля 2009

Я сейчас изучаю ASP.NET MVC. Я задавался вопросом, возможно ли это, когда форма отправляется на получение идентификатора новой записи, а затем перенаправляется на новую страницу с новым идентификатором записи?

Информация введена в базу данных правильно, но я не уверен, как получить идентификатор?

Например, заполните новую форму сведений о клиенте, а затем перенаправьте страницу в форму заказов, где можно добавить новые заказы для клиента.

Ответы [ 3 ]

4 голосов
/ 19 февраля 2009

Как вы получаете доступ к базе данных? Если вы используете ORM (например, NHibernate или LINQ to SQL), то объект должен иметь обновленное свойство ID после его вставки в базу данных.

Если вы запускаете SQL вручную, вам нужно сделать выбор в том же операторе, что и вставка:

insert into ...

select scope_identity()

Это вернет идентификатор строки, которую вы только что создали.

Тогда вы можете сделать это в вашем действии:

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

С идентификатором, полученным либо из сохраненного объекта, либо из возвращаемого значения SQL. Какой бы ни подходил к вашему сценарию.

Редактировать

Как вы уже упоминали, вы используете 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 });
0 голосов
/ 19 февраля 2009

Напишите ваш запрос, чтобы он возвращал идентификатор новой записи и перенаправил пользователя с новым идентификатором. Например, если вы используете SQL Server и пишете свои запросы вручную:

command.CommandText = "Insert Into Customers(...) Values (...) Select @@Identity";
long id = long.Parse(command.ExecuteScalar().ToString());
Redirect("...customers/neworders/" + id);
0 голосов
/ 19 февраля 2009

Один вопрос от меня: что вы используете для слоя БД? Это скажет нам, как лучше ответить на ваш вопрос.

Для перенаправления, когда у вас есть свой идентификатор, вы можете использовать:

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

где url - это комбинация пути и вашего нового идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...