繁体   English   中英

'System.Dynamic.DynamicObject'不包含'PropertyName'的定义

[英]'System.Dynamic.DynamicObject' does not contain a definition for 'PropertyName'

我遇到了下一个问题:

我正在尝试运行.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'不包含'BanReason'的定义。

我正在使用带有.NET 4.5的Visual Studio 2012和带有.NET 4.0的ApplicationPool的本地IIS服务器。 在具有相同配置的另一台计算机上,所有工作都很好,并且不会抛出任何异常。

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

我认为这是错过配置问题。 任何猜测将不胜感激。 谢谢

您的代码很好,ViewBag具有动态属性,并且在运行系统中正在分配所有属性。

这个异常是一个常见的CLR异常。尝试执行以下步骤,我希望它能工作。 打开Visual Studio

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

如果仍然出现问题

  • 工具 - >选项 - >调试(扩展) - >常规 - >(检查)启用我的代码

希望它有所帮助,它为我工作

点击这里查看详细图片

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

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

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

ViewBag RuntimeBinderException(MVC 4,ASPX)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM