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