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";
}

問題は、ビューコードで「モデル」が常にnullであることです...何が見逃したのですか? ここでファンダメンタルが欠けていますか?

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 に答える