【问题标题】:ViewBag RuntimeBinderException (MVC 4, ASPX)ViewBag RuntimeBinderException (MVC 4, ASPX)
【发布时间】:2013-01-30 22:30:44
【问题描述】:

我使用 ASPX 引擎(不是 Razor)启动了一个 Default MVC 4 项目,一切正常。
我可以使用

<% Model.Name %>

<% Model.Rating %>

用于图书评级(而不是 asp.net/mvc 教程网站上的餐厅评论)。但是,我的代码错误 <% ViewBag.Message %>

...所以由于某种原因,当从 BookReview 模型中的“BookReviewer”类继承时,我可以查看模型信息,但不能查看 Viewbag?我错过了什么吗?代码如下。

[控制器] HomeController.cs:

    public class HomeController : Controller
    {
        var model = new BookReview()
        {
            Name = "Pro jQuery For Noobs",
            Rating = 7
        };
        return View(model);
    }

[型号] BookReview.cs

    namespace Bookreview.Models
    {
            public class BookReview
            {
                    public string Name { get; set; }
                    public int Rating { get; set; }
            }
    }

[查看] 索引.aspx:

    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<BookRevew.Models.BookReviewer>" %>
    <asp:Content ID="indexFeatured" ContentPlaceHolderID="FeaturedContent" runat="server">
        <h2>
            <% ViewBag.Message %>
            <% Model.Name %>
            <% Model.Rating %>
        </h2>
    </asp:content>

【问题讨论】:

  • 我没有看到你设置ViewBag.Message的任何地方。我也没有看到你提到的BookReviewer 课程。有没有你没有发布的代码?
  • 我将它设置在另一个 ActionResult 中: public ActionResult About() { ViewBag.Message = "This is a test";返回视图();是否不允许在其他ActionResults之外被引用?

标签: c# asp.net .net asp.net-mvc viewbag


【解决方案1】:

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

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

【讨论】:

  • 谢谢,这比我在书中阅读的方式更有意义。
  • 这样的措辞在技术上并不完全正确。你可以。转到var otherController = new OtherController(); return otherController.Whatever(),视图将可以访问原始控制器放置在 ViewBag 中的数据。所以这不是“由为视图服务的控制器设置的”。而是:在 Index() 执行路径中,它从未设置过。要确认这一点,可以在设置 Viewbag.Message 的行上设置断点。调试的时候不会命中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
相关资源
最近更新 更多