2

我最近为我继承的系统修改了一个模型,并且由于某种原因 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()调试检查器正确显示包含我期望的所有内容的模型。

4

2 回答 2

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);
}
于 2013-08-07T15:04:03.757 回答
-1

我认为这是 AutoMapper 线。创建映射后,我相信您需要使用以下语法调用它们:

var newsModel = Mapper.Map(_news);

于 2013-08-07T15:10:20.023 回答