如何在Razor页面的PartialView中获取ViewData

时间:2018-10-11 16:57:32

标签: asp.net-mvc asp.net-core-mvc razor-pages

我正在为我的应用程序使用Razor页面,在我的应用程序的一部分中,我使用了部分视图,这是我的代码;

 public class Permission
    {
        [Key]
        public int PermissionId { get; set; }     
        public string PermissionTitle { get; set; }
        public int? ParentID { get; set; }       
    }

  public class IndexModel : PageModel
    {
     public PartialViewResult OnGetCreateRole()
    {
        var ListPermission = permissionService.AllPermission();
        return new PartialViewResult()
          {
            ViewName = "_PCreateRole", // partial's name
            ViewData = new ViewDataDictionary<List<Permission>>(ViewData, 
            ListPermission)
          };
    }
    }

ViewDataPermission类的列表,我已经将ViewData发送给partial,但是我不知道如何获取ViewData,也我的partial使用了另一个model,以下是我的部分内容:

@model ToMVC.DataLayer.Entities.User.Role
<div class="row">
    <div class="col-md-12">
        <form asp-page="CreateRole" method="post">
            <div class="form-group">
                <label class="control-label">Title</label>
                <input asp-for="RoleTitle" class="form-control"/>
                <p><span class="text-danger" asp-validation-for="RoleTitle"></span></p>
            </div>
            <div class="form-group">
                <input type="submit" value="submit" class="btn btn-primary" />
            </div>

           //this part needs ViewData 
           @foreach (var item in ViewData)
            {

            }

        </form>
    </div>
</div>

我想在ViewData循环中使用Foreach

1 个答案:

答案 0 :(得分:0)

比ViewData更好的解决方案是简单地创建一个新的ViewModel类,其中包含视图所需的所有信息。

//check your namespace here - this is just an example
@model ToMVC.DataLayer.UserRoleAndPermissions
<div class="row">
    <div class="col-md-12">
        <form asp-page="CreateRole" method="post">
            <div class="form-group">
                <label class="control-label">Title</label>
                <input asp-for="RoleTitle" class="form-control"/>
                <p><span class="text-danger" asp-validation-for="RoleTitle"></span></p>
            </div>
            <div class="form-group">
                <input type="submit" value="submit" class="btn btn-primary" />
            </div>

           @foreach (var item in Model.Permissions)
            {

            }

        </form>
    </div>
</div>

您的看法

{{1}}