【问题标题】:How Can I Get ViewData in PartialView in Razor Pages如何在 Razor 页面的部分视图中获取 ViewData
【发布时间】:2019-03-16 20:21:18
【问题描述】:

我正在为我的应用程序使用 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 发送到部分但我不知道如何获取 ViewData,我的部分使用另一个 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>

我想在Foreach 循环中使用ViewData

【问题讨论】:

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


    【解决方案1】:

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

    public class UserRoleAndPermissions{
    
        public UserRoleAndPermissions(){
             Permissions = new List<Permissions>();
        }
    
        public List<Permission> Permissions {get;set;}
    
        public ToMVC.DataLayer.Entities.User.Role Role {get;set;}
    }
    

    你的看法

    //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>
    

    【讨论】:

    • 我之前和你的都测试过 ViewModel,但问题是局部视图中的模型为空,并且没有发送任何内容。
    • 那是因为你没有向它发送模型
    猜你喜欢
    • 1970-01-01
    • 2020-12-14
    • 2019-06-28
    • 2021-12-14
    • 2012-11-30
    • 2018-06-05
    • 2020-04-22
    • 1970-01-01
    • 2019-05-30
    相关资源
    最近更新 更多