将Viewbag数据从Controller传递到部分视图返回Null

时间:2018-01-12 21:54:40

标签: asp.net-mvc asp.net-core partial-views viewbag

我遇到的问题是将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()来自的地方。

0 个答案:

没有答案