Asp.net mvc MVC3 Razor ViewBag。模型未进入页面

Asp.net mvc MVC3 Razor ViewBag。模型未进入页面,asp.net-mvc,razor,Asp.net Mvc,Razor,我最近为继承的系统修改了一个模型,由于某些原因,ViewBag.Model没有进入页面。我已经将代码恢复到开始修补之前的状态,但仍然没有运气 对视图的调用如下所示: public virtual ActionResult Edit(long id) { var _news = _newsRepository.GetNewsById(id); ViewBag.Model = AutoMapper.Mapper.Map<News, NewsModel>(_news);

我最近为继承的系统修改了一个模型,由于某些原因,ViewBag.Model没有进入页面。我已经将代码恢复到开始修补之前的状态,但仍然没有运气

对视图的调用如下所示:

public virtual ActionResult Edit(long id)
{
    var _news = _newsRepository.GetNewsById(id);
    ViewBag.Model = AutoMapper.Mapper.Map<News, NewsModel>(_news);
    ViewBag.Model.CurrentNewsImageFile = ConfigSettings.HostDomainName + ConfigSettings.NewsImageBasePath + _news.image_file;

    return View();
}
问题是视图代码中的“Model”总是空的。。。我错过了什么?我是不是错过了一个基本点


在跟踪ActionResult代码时,直到
返回视图()
调试检查器正确显示包含我期望的所有内容的模型。

您只需返回
视图(模型)
。如果不将模型传递到
View()
中,它不知道该做什么

但是,我对您列出的代码感到困惑,您似乎试图将模型放入ViewBag?ViewBag不应包含模型

我认为您需要的代码是:

public virtual ActionResult Edit(long id)
{
    var _news = _newsRepository.GetNewsById(id);
    var model = AutoMapper.Mapper.Map<News, NewsModel>(_news);
    model.CurrentNewsImageFile = ConfigSettings.HostDomainName + ConfigSettings.NewsImageBasePath + _news.image_file;

    return View(model);
}
公共虚拟操作结果编辑(长id)
{
var\u news=\u newsRepository.GetNewsById(id);
var model=AutoMapper.Mapper.Map(_news);
model.CurrentNewsImageFile=ConfigSettings.HostDomainName+ConfigSettings.NewsImageBasePath+\u news.image\u文件;
返回视图(模型);
}

我认为这是汽车制造商的产品线。创建映射后,我相信您需要使用以下语法调用它们:


var newsModel=Mapper.Map(_news)

您是否调试过automapper行以确保其返回映射属性?模型不会进入
视图包
;它直接传递到
View()
ViewBag
如果您的操作中不需要它,则可以将模型传递到视图(model)重载。@Robert yes-视图包中的模型也包含了我所期望的一切。@anaximander&Charlie Brown我试过了-很多继承的代码都遵循了这个结构,并且工作正常-直到我搞砸了一些东西,我在代码中跟踪了几个小时,无法找出什么坏了。好吧-这很奇怪-我已经做了这与之前的页面有相同的错误,并且在ViewBag.Model结构之后的应用程序的另一部分中有一个几乎相同的部分工作(并且仍然工作)。然而,使用上面的代码,现在确实可以工作了。我现在完全不明白为什么会这样,但是谢谢你。我想这是因为在视图中它只是说
Model==null
,而不是
ViewBag.Model==null
。但是将模型放在ViewBag中毫无意义,所以请坚持使用建议的代码!:)是的-我也这么认为-但完全相同的代码样式在应用程序的另一个页面上也可以使用。以前的供应商经常改变编码风格,我不得不在屏幕上安装泡沫保护器。
public virtual ActionResult Edit(long id)
{
    var _news = _newsRepository.GetNewsById(id);
    var model = AutoMapper.Mapper.Map<News, NewsModel>(_news);
    model.CurrentNewsImageFile = ConfigSettings.HostDomainName + ConfigSettings.NewsImageBasePath + _news.image_file;

    return View(model);
}