Изходът на съхранената процедура ми дава цяло число. Трябва да предам тази стойност на страницата за показване и да я увелича.
контролер:
var OrderId = db.USP_SEL_LAST_ORDERID();
ViewData["OrderId"] = (OrderId);
Изглед:
var orderid = int.Parse(@ViewBag.OrderId);
грешка:
Най-добрият начин на претоварване за "int.Parse (string)" има някои невалидни аргументи
Отговори:
0 за отговор № 1Виж отдолу.
var orderid = int.Parse(@ViewBag.OrderId.ToString());
Благодаря
0 за отговор № 2
Отговорът на @ Wheels73 е почти прав, но трябва да знаете, че методът на съхранената процедура връща данни от DbContext
под формата на набор от резултати, дори има само една стойност. Можете да използвате и двете FirstOrDefault()
или FirstOrDefault<int>()
метод, който да гарантира, че се връща int
:
контрольор
var OrderId = db.USP_SEL_LAST_ORDERID().FirstOrDefault();
ViewData["OrderId"] = OrderId; // ensure this is an integer
изглед
var orderid = int.Parse(@ViewBag.OrderId.ToString());
Забележи, че System.Data.Entity.Core.Objects.ObjectResult<T>
може да има няколко стойности (с различни типове данни), поради което е възможно да се поиска първо int
за да получите резултат от SP. Също така, по-добре да използвате силно написан клас viewmodel с int
собственост, а не динамична ViewBag
или ViewData
:
Модел
public class ViewModel
{
public int OrderId { get; set; }
}
контрольор
public ActionResult ActionName()
{
var model = new ViewModel();
var OrderId = db.USP_SEL_LAST_ORDERID().FirstOrDefault();
model.OrderId = OrderId;
// returns entire viewmodel to view, "int.Parse" conversion not required
return View(model);
}
Подобен въпрос:
консумират int резултат, върнат от съхранена процедура в MVC4
Как да работите с ObjectResult в Рамката на Entity 4