ASP .Net Core — проблема наследования от RazorPage‹TModel›

Я пытаюсь определить базовую страницу, наследуя от RazorPage. Если я передам что-либо, кроме TModel, в свой раздел @inherit на странице, я получу следующую ошибку:

ArgumentException: Property 'ViewData' is of type 'Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary`1[[MyProject.Models.IndexViewModel, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]', but this method requires a value of type 'Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary`1[[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.

Имя параметра: viewContext

Как я могу переопределить ViewData, чтобы я мог передать свою пользовательскую модель вместо IndexViewModel в следующей строке:

@наследует MyProject.Base.BaseView

Спасибо


person Ali    schedule 20.03.2017    source источник


Ответы (1)


Итак, я сделал это, чтобы обойти эту проблему, не знаю, хороший это или плохой подход, но работает

вместо того, чтобы фактически использовать TModel в RazorPage, используйте объект для универсального типа в RazorPage (RazorPage) и создайте свойство для предоставления вашей собственной модели запрошенного типа и приведения модели к этому типу.

как это:

 public abstract class MenuViewPage<TModel> : RazorPage<object>
    {
        public TModel PageModel {
            get
            {
                return (TModel)ViewData.Model;
            }
        }

    }
person Lyon    schedule 12.06.2017