我遇到的问题是将Viewbag数据从我的控制器操作传递到部分视图。它一直在返回null,我很难理解为什么。关于使用Viewbag的每篇文章我都看过,我的代码似乎是正确的。
我的控制器操作:
[HttpGet]
public ActionResult _FileList(int id)
{
ClaimViewModel claim = new ClaimViewModel();
claim.document = _documentService.GetDocument(session.customerId, id);
string filePath = _fileService.ViewFile("azureContainer", claim.document.DocumentPath);
ViewBag.file = filePath;
return PartialView("_FileList");
}
我的主要观点:
@Html.Partial("_FileList", Model.Documents)
我的部分视图(_FileList.cshtml):
<div class="list-group">
@foreach (var file in Model)
{
<button type="button" id="docsButton" class="btn btn-default" data-toggle="modal" data-target="#docsModal"
onclick="_viewer.OpenUrl('@ViewContext.ViewBag.file'); return false;">
@file.Name
</button>
}
</div>
ViewBag应该将字符串存储到特定文件的URL,但在局部视图中它返回null。我尝试了不同的解决方法,例如在我的主视图中添加new ViewDataDictionary(ViewData) { { "file", ViewBag.file } }
来调用部分视图,但我还没有能够得到任何工作。我知道我的控制器中的filePath
不是空的。我已经对此进行了测试以确定。所以,我不完全确定这里出了什么问题,并且想知道是否有人可以帮助我。我已经检查了本网站上有关该问题的不同主题,但没有一个解决方案有用。我需要Model.Documents
@Html.Partial
,因为我还需要引用一个完全独立的模型。有谁知道这里会发生什么?我觉得我在控制器或部分视图中误解了某些东西。
注意:
我正在使用Atalasoft的Web文档查看器,这是_viewer.OpenUrl()
来自的地方。