加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何在asp.net核心中使用ViewDataDictionary和Html.Partial?

发布时间:2020-12-16 04:01:53 所属栏目:asp.Net 来源:网络整理
导读:我的情况如下: 模型: public class Book{ public string Id { get; set; } public string Name { get; set; }}public class Comment{ public string Id { get; set; } public string BookId { get; set; } public string Content { get; set; } } 控制器:
我的情况如下:

模型:

public class Book
{
    public string Id { get; set; }

    public string Name { get; set; }
}

public class Comment
{
    public string Id { get; set; }

    public string BookId { get; set; }

    public string Content { get; set; }    
}

控制器:

public IActionResult Detail(string id)
{
    ViewData["DbContext"] = _context; // DbContext

    var model = ... // book model

    return View(model);
}

视图:

详细视图:

@if (Model?.Count > 0)
{
    var context = (ApplicationDbContext)ViewData["DbContext"];
    IEnumerable<Comment> comments = context.Comments.Where(x => x.BookId == Model.Id);

    @Html.Partial("_Comment",comments)
}

评论局部视图:

@model IEnumerable<Comment>

@if (Model?.Count > 0)
{
    <!-- display comments here... -->
}

<-- How to get "BookId" here if Model is null? -->

我试过这个:

@Html.Partial("_Comment",comments,new ViewDataDictionary { { "BookId",Model.Id } })

然后

@{
    string bookid = ViewData["BookId"]?.ToString() ?? "";
}

@if (Model?.Count() > 0)
{
    <!-- display comments here... -->
}

<div id="@bookid">
    other implements...
</div>

但是错误:

‘ViewDataDictionary’ does not contain a constructor that takes 0
arguments

当我选择ViewDataDictionary并按F12时,它会命中:

namespace Microsoft.AspNetCore.Mvc.ViewFeatures
{
    public ViewDataDictionary(IModelMetadataProvider metadataProvider,ModelStateDictionary modelState);
}

我不知道什么是IModelMetadataProvider和ModelStateDictionary?

我的目标:将视图Detail.cshtml中的模型注释发送到部分视图_Comment.cshtml,其中包含一个包含BookId的ViewDataDictionary.

我的问题:我怎么能这样做?

解决方法

另一种使用它的方法是将当前视图的ViewData传递给构造函数.这样,新的ViewDataDictionary将使用您使用集合初始值设定项放入的项目进行扩展.
@Html.Partial("MyPartial",new ViewDataDictionary(ViewData) { { "BookId",Model.Id } })

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读