Razor partial page vs model
От: Codealot Земля  
Дата: 07.12.20 02:50
Оценка:
Есть основная страница, которая задается примерно вот так:

@page
@model AspNet50WebAppEmpty.Pages.IndexModel
@{
ViewData["Title"] = Model.TestProperty;
}

<!DOCTYPE html>
<html lang="en">
@await Html.PartialAsync("_PartPage", Model)
<body>
@Model.TestProperty
</body>
</html>


И частичная страница задается примерно вот так:

@page
@model AspNet50WebAppEmpty.Pages._PartPageModel
@{
}

<head>
<meta charset="utf-8" />
<title>@Model.TestProperty</title>
</head>


В частичной странице, обращение к Model выдает null ref. Вопрос: почему модель не передается корректно?
Ад пуст, все бесы здесь.
Re: Razor partial page vs model
От: varenikAA  
Дата: 07.12.20 04:03
Оценка:
Здравствуйте, Codealot, Вы писали:

Модели у вас разные:
C>@model AspNet50WebAppEmpty.Pages.IndexModel
C>@model AspNet50WebAppEmpty.Pages._PartPageModel
Re[2]: Razor partial page vs model
От: Codealot Земля  
Дата: 07.12.20 04:05
Оценка:
Здравствуйте, varenikAA, Вы писали:

C>>@model AspNet50WebAppEmpty.Pages.IndexModel

C>>@model AspNet50WebAppEmpty.Pages._PartPageModel

Первая наследуется от второй. Были бы разные — это invalid cast, а не null ref. Так что неверная догадка.
Ад пуст, все бесы здесь.
Re[3]: Razor partial page vs model
От: varenikAA  
Дата: 07.12.20 04:20
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Первая наследуется от второй. Были бы разные — это invalid cast, а не null ref. Так что неверная догадка.


в частичное добавь
@using определение модели
Re: Razor partial page vs model
От: varenikAA  
Дата: 07.12.20 04:22
Оценка:
Здравствуйте, Codealot, Вы писали:


C> ViewData["Title"] = Model.TestProperty;

и вот это быть может не успевает отработать. перенеси в обработчик. он отработает гарантированно до генерации разметки.
фигню написал, сорри.
Отредактировано 07.12.2020 4:23 vaa . Предыдущая версия .
Re[4]: Razor partial page vs model
От: Codealot Земля  
Дата: 07.12.20 05:05
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>в частичное добавь

AA>@using определение модели

Не понял, о чем ты.
Ад пуст, все бесы здесь.
Re[5]: Razor partial page vs model
От: varenikAA  
Дата: 07.12.20 05:36
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Не понял, о чем ты.

@using PartialViewsSample.ViewModels
@model ArticleSection

<h3>@Model.Title Index: @ViewData["index"]</h3>
<div>
    @Model.Content
</div>

стэк-трейс хоть скинь. и property где задано в OnGet и иначе?
Re: Razor partial page vs model
От: varenikAA  
Дата: 07.12.20 05:43
Оценка:
Здравствуйте, Codealot, Вы писали:

C>

C> @await Html.PartialAsync("_PartPage", Model)

Кажется понял, это все разор. Если так:

@await Html.PartialAsync("_PartPage", model)

Re[6]: Razor partial page vs model
От: Codealot Земля  
Дата: 07.12.20 05:43
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>@using PartialViewsSample.ViewModels


Это просто razor page, откуда там ViewModels?

AA>стэк-трейс хоть скинь. и property где задано в OnGet и иначе?


namespace AspNet50WebAppEmpty.Pages
{
    public class _PartPageModel : PageModel
    {
        public string TestProperty { get; set; } = "TestProperty";

        public void OnGet()
        {
        }
    }
}


     AspNet50WebAppEmpty.Views.dll!AspNetCore.Pages__PartPage.Model.get()    Unknown
>    AspNet50WebAppEmpty.Views.dll!AspNetCore.Pages__PartPage.ExecuteAsync.AnonymousMethod__7_0() Line 8    C#
     Microsoft.AspNetCore.Razor.Runtime.dll!Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.SetOutputContentAsync()    Unknown
     AspNet50WebAppEmpty.Views.dll!AspNetCore.Pages__PartPage.ExecuteAsync()    Unknown
     Microsoft.AspNetCore.Mvc.Razor.dll!Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(Microsoft.AspNetCore.Mvc.Razor.IRazorPage page, Microsoft.AspNetCore.Mvc.Rendering.ViewContext context)    Unknown
     Microsoft.AspNetCore.Mvc.Razor.dll!Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(Microsoft.AspNetCore.Mvc.Razor.IRazorPage page, Microsoft.AspNetCore.Mvc.Rendering.ViewContext context, bool invokeViewStarts)    Unknown
     Microsoft.AspNetCore.Mvc.Razor.dll!Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(Microsoft.AspNetCore.Mvc.Rendering.ViewContext context)    Unknown
     Microsoft.AspNetCore.Mvc.ViewFeatures.dll!Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.RenderPartialCoreAsync(string partialViewName, object model, Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary viewData, System.IO.TextWriter writer)    Unknown
     Microsoft.AspNetCore.Mvc.ViewFeatures.dll!Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.PartialAsync(string partialViewName, object model, Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary viewData)    Unknown
     Microsoft.AspNetCore.Mvc.ViewFeatures.dll!Microsoft.AspNetCore.Mvc.Rendering.HtmlHelperPartialExtensions.PartialAsync(Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper htmlHelper, string partialViewName, object model)    Unknown
     AspNet50WebAppEmpty.Views.dll!AspNetCore.Pages_Index.ExecuteAsync() Line 9    C#
     Microsoft.AspNetCore.Mvc.RazorPages.dll!Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.RazorPageAdapter.ExecuteAsync()    Unknown
     Microsoft.AspNetCore.Mvc.Razor.dll!Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(Microsoft.AspNetCore.Mvc.Razor.IRazorPage page, Microsoft.AspNetCore.Mvc.Rendering.ViewContext context)    Unknown
     Microsoft.AspNetCore.Mvc.Razor.dll!Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(Microsoft.AspNetCore.Mvc.Razor.IRazorPage page, Microsoft.AspNetCore.Mvc.Rendering.ViewContext context, bool invokeViewStarts)    Unknown
     Microsoft.AspNetCore.Mvc.Razor.dll!Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(Microsoft.AspNetCore.Mvc.Rendering.ViewContext context)    Unknown
     Microsoft.AspNetCore.Mvc.ViewFeatures.dll!Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(Microsoft.AspNetCore.Mvc.Rendering.ViewContext viewContext, string contentType, int? statusCode)    Unknown
     Microsoft.AspNetCore.Mvc.RazorPages.dll!Microsoft.AspNetCore.Mvc.RazorPages.PageResult.ExecuteResultAsync(Microsoft.AspNetCore.Mvc.ActionContext context)    Unknown
     Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult result)    Unknown
     Microsoft.AspNetCore.Mvc.RazorPages.dll!Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeResultAsync(Microsoft.AspNetCore.Mvc.IActionResult result)    Unknown
     Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext<Microsoft.AspNetCore.Mvc.Filters.IResultFilter, Microsoft.AspNetCore.Mvc.Filters.IAsyncResultFilter>(ref Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.State next, ref Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Scope scope, ref object state, ref bool isCompleted)    Unknown
     Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextResultFilterAsync<Microsoft.AspNetCore.Mvc.Filters.IResultFilter, Microsoft.AspNetCore.Mvc.Filters.IAsyncResultFilter>()    Unknown
     Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext<Microsoft.AspNetCore.Mvc.Filters.IResultFilter, Microsoft.AspNetCore.Mvc.Filters.IAsyncResultFilter>(ref Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.State next, ref Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Scope scope, ref object state, ref bool isCompleted)    Unknown
     Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()    Unknown
     Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.State next, ref Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Scope scope, ref object state, ref bool isCompleted)    Unknown
     Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeNextResourceFilter()    Unknown
     Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.State next, ref Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Scope scope, ref object state, ref bool isCompleted)    Unknown
     Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()    Unknown
     Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeAsync()    Unknown
     Microsoft.AspNetCore.Mvc.Core.dll!Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory.CreateRequestDelegate.AnonymousMethod__0(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
     Microsoft.AspNetCore.Routing.dll!Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext)    Unknown
     Microsoft.AspNetCore.Routing.dll!Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext)    Unknown
     Microsoft.AspNetCore.Diagnostics.dll!Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
     Microsoft.AspNetCore.HostFiltering.dll!Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
     Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.HostingApplication.ProcessRequestAsync(Microsoft.AspNetCore.Hosting.HostingApplication.Context context)    Unknown
     Microsoft.AspNetCore.Server.IIS.dll!Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT<Microsoft.AspNetCore.Hosting.HostingApplication.Context>.ProcessRequestAsync()    Unknown
     Microsoft.AspNetCore.Server.IIS.dll!Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.HandleRequest()    Unknown
     Microsoft.AspNetCore.Server.IIS.dll!Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.Execute()    Unknown
     System.Private.CoreLib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch()    Unknown
     System.Private.CoreLib.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()    Unknown
Ад пуст, все бесы здесь.
Re[2]: Razor partial page vs model
От: Codealot Земля  
Дата: 07.12.20 05:44
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>Кажется понял, это все разор. Если так:

AA>

AA> @await Html.PartialAsync("_PartPage", model)


Error CS0103 The name 'model' does not exist in the current context AspNet50WebAppEmpty D:\Projects.Experiments\Temp\AspNet50WebAppEmpty\AspNet50WebAppEmpty\Pages\Index.cshtml 9 Active

Ад пуст, все бесы здесь.
Re[3]: Razor partial page vs model
От: varenikAA  
Дата: 07.12.20 05:53
Оценка: 3 (1)
Здравствуйте, Codealot, Вы писали:

C>

C>Error CS0103 The name 'model' does not exist in the current context AspNet50WebAppEmpty D:\Projects.Experiments\Temp\AspNet50WebAppEmpty\AspNet50WebAppEmpty\Pages\Index.cshtml 9 Active


Ну, хз, вот это рабочий код(core 3.1):

<partial name="_Packets" model="@Model.Packets" />


в Packets у меня класс со св-вами.

Через хэлпер не пробовал.
Re: Razor partial page vs model
От: varenikAA  
Дата: 07.12.20 06:00
Оценка:
Здравствуйте, Codealot, Вы писали:

C>

C>@page
C>@model AspNet50WebAppEmpty.Pages._PartPageModel
C>@{

Удали из представления директиву и OnGet подозрителен для частичного. Это все таки метод страницы.
Re[4]: Razor partial page vs model
От: Codealot Земля  
Дата: 07.12.20 06:10
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>
AA><partial name="_Packets" model="@Model.Packets" />
AA>


Если верить документации, то должно быть однофигственно. Но как ни странно, вариант
<partial name="_BasePage" model="@Model" />
работает.
Ад пуст, все бесы здесь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.