Как я могу получить ViewData в PartialView на бритвенных страницах - PullRequest
0 голосов
/ 11 октября 2018

Я использую Razor Pages Для моего приложения в одной части моего приложения я использовал частичное представление, здесь мои коды;

 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)
          };
    }
    }

ViewData - это список Permissionкласс, и я отправил 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>

Я хочу использовать ViewDataв Foreach цикле.

1 Ответ

0 голосов
/ 11 октября 2018

Лучшим решением, чем 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>
...