MVC3 Razor ViewBag.Model没有进入Page

时间:2013-08-07 15:02:01

标签: 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.CurrentNewsImageFile = ConfigSettings.HostDomainName + ConfigSettings.NewsImageBasePath + _news.image_file;

    return View();
}

该视图包含以下代码:

@model MyModels.Models.NewsModel

@{
    bool IsCreate = Model == null || Model.Id == 0;
    ViewBag.Title = IsCreate ? "Add News" : "Edit News";
}

问题是“模型”在视图代码中始终为空...我错过了什么?我在这里错过了一个根本吗?

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

2 个答案:

答案 0 :(得分:2)

您只需返回View(theModel)即可。如果您未将模型传递到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);
}

答案 1 :(得分:-1)

我认为这是AutoMapper系列。一旦你创建了映射,我相信你需要使用以下语法来调用它们:

var newsModel = Mapper.Map(_news);