'System.Dynamic.DynamicObject' does not contain a de

本文关键字:contain de not DynamicObject System Dynamic does | 更新日期: 2023-09-27 18:28:49

我面临下一个问题:

我正在尝试运行.NET MVC站点,以使用ViewBag将一些数据传递给我的View。以下是我设置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"不包含的定义"禁止理由"。

我使用的是带有.NET 4.5的Visual Studio 2012和带有.NET 4.0的ApplicationPool的本地IIS服务器。在另一台配置相同的计算机上,所有操作都很好,没有出现异常。

请不要建议使用其他技术,如ViewData["]和创建单独的模型,我不想更改在其他机器上运行良好的代码。

我认为这是配置失误的问题。任何猜测都将不胜感激。感谢

'System.Dynamic.DynamicObject' does not contain a de

您的代码很好,ViewBag有一个动态属性,并且在运行时中所有属性都被分配。

此异常是常见的CLR异常。。试着做以下步骤,我希望它会起作用。打开Visual Studio

  • 调试-->异常-->(取消选中)公共语言运行时异常

如果仍然出现问题

  • 工具-->选项-->调试(展开)-->常规-->(选中)仅启用我的代码

希望它能帮上忙,对我有用

点击此处查看详细图像

我相信这是您的问题,来自另一个stackerflow答案:

正如我们从您的评论中看到的,您正在另一个控制器中设置ViewBag.Message。ViewBag仅用于由为视图提供服务的控制器设置的视图的数据。

如果你需要从另一个控制器发送,你应该在你的操作方法中使用一个参数,然后你可以将ViewBag.Message设置为传入的参数。

ViewBag运行时绑定异常(MVC 4,ASPX)