我面临着下一个问题:
我正在尝试运行.NET MVC站点,以便使用ViewBag将一些数据传递给我的视图。下面是我设置VeiwBag的方法。
[HttpGet]
[AllowAnonymous]
public ActionResult Start()
{
ViewBag.BanReason = null;
int userId;
//Request with UserId, display ban reason if necessary
if (Request.Params["UserId"] != null && int.TryParse(Request.Params["UserId"], out userId))
{
ViewBag.BanReason = CheckIfUserBanned(userId);
}
ViewBag.Users = MvcApplication.Users;
return View();
}
当我为ViewBag赋值时(例如ViewBag.BanReason = null;),我就得到了带有消息的RuntimeBinderException
'System.Dynamic.DynamicObject‘不包含'BanReason’的定义。
我使用的是带有IIS4.5的Visual Studio2012和带有.NET 4.0的ApplicationPool的本地.NET服务器。在另一台具有相同配置的计算机上,所有操作都工作得很好,没有抛出异常。
请不要建议使用其他技术,如ViewData"“和创建一个单独的模型,我不想改变代码,在另一台机器上很好地工作。
我想这是配置错误的问题。任何猜测都将不胜感激。谢谢
发布于 2014-06-30 18:32:18
你的代码很好,ViewBag有一个动态属性,在运行时所有的属性都被分配了。
此异常是常见的CLR异常。尝试执行以下步骤,我希望它会起作用。打开Visual Studio
公共语言运行时异常
如果问题仍然存在
代码工具-->选项-->调试(展开) -->常规--> (选中)启用仅我的代码
希望它能帮上忙,它对我很有效
发布于 2013-09-06 04:25:08
我相信这是来自另一个堆栈溢出答案的问题:
正如我们从您的评论中看到的,您正在另一个控制器中设置ViewBag.Message。ViewBag仅用于由为视图提供服务的控制器设置的视图的数据。
如果需要从另一个控制器发送,则应该在操作方法中使用参数,然后可以将ViewBag.Message设置为传入的参数。
https://stackoverflow.com/questions/18383012
复制相似问题