Asp.net 无法将类型为{System.Data.Entity.Core.Objects.ObjectResult<;int>;}的对象转换为int-ASP MVC 5

Asp.net 无法将类型为{System.Data.Entity.Core.Objects.ObjectResult<;int>;}的对象转换为int-ASP MVC 5,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,存储过程输出给我一个整数值。我需要将该值传递到视图页面并增加它 控制器: var OrderId = db.USP_SEL_LAST_ORDERID(); ViewData["OrderId"] = (OrderId); 视图: 错误: 与“int.Parse(string)”匹配的最佳重载方法具有一些无效参数 见下文 var orderid = int.Parse(@ViewBag.OrderId.ToString()); 感谢@Wheels73的答案几乎正确,但是您需要知道,存储过程

存储过程输出给我一个整数值。我需要将该值传递到视图页面并增加它

控制器:

var OrderId = db.USP_SEL_LAST_ORDERID();
ViewData["OrderId"] = (OrderId);
视图:

错误:

与“int.Parse(string)”匹配的最佳重载方法具有一些无效参数

见下文

  var orderid = int.Parse(@ViewBag.OrderId.ToString());

感谢@Wheels73的答案几乎正确,但是您需要知道,存储过程方法以结果集的形式从
DbContext
返回数据,即使它只有一个值。您可以使用
FirstOrDefault()
FirstOrDefault()
方法来确保它返回
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
可以有多个值(具有不同的数据类型),因此可以请求第一个
int
来获得SP结果。另外,最好使用具有
int
属性的强类型viewmodel类,而不是动态
ViewBag
ViewData

模型

控制器

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); 
}
类似问题:


这是关于错误的问题吗?如果是,这不是不言自明的吗?是的。我需要知道如何将这个对象类型{System.Data.Entity.Core.Objects.ObjectResult}转换为int 32。我认为这不是您的问题。Parse方法将返回一个int。。请看错误消息…您传递到解析方法中的类型是错误的。那么我应该如何将对象类型为int的ViewBag项强制转换为int?确定。。请参阅下面的答案谢谢您的帮助。但我仍然收到错误:输入字符串的格式不正确。您在ViewBag.OrderID中是否确实有任何内容。这对我来说很管用。是的,我有。SP返回0,并且该值已分配给ViewBag。请问您为什么使用ViewBag而不是视图模型?我假定您在控制器中这样设置ViewBag。ViewBag.OrderID=X
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); 
}