Почему мой объект Model всегда пуст в моей Razor Page в приложении dotnet core 2.x Razor Page? - PullRequest
0 голосов
/ 25 апреля 2018

Я создаю частичное представление как часть моего Index.cshtml.Я следую основам, изложенным в статье Microsoft => https://docs.microsoft.com/en-us/aspnet/core/mvc/views/partial?view=aspnetcore-2.1

Суть в том, что я: добавляю span в мой файл Index.cshtml, который фактически загружается с HTML из RazorPage.Соответствующий HTML-код в Index.cshtml выглядит следующим образом:

<span id="basicView">
    @{ 
        Model.UserName = "IndexUser";
        await Html.RenderPartialAsync("BasicPartial", Model);
    }
</span>

Я добавил публичное свойство для моей IndexModel с именем UserName в RazorPage, и оно выглядит следующим образом:

namespace FirstCore.Pages
{
    public class IndexModel : PageModel
    {

        public string UserName;
        public void OnGet()
        {

        }
    }
}

Это очень просто для этого примера.Итак, в HTML-файле Index.cshtml вы можете видеть, что я устанавливаю значение этого открытого свойства в «IndexUser», а затем передаю имя страницы Razor («BasicPartial» - View) и объект Model в BasicaPartial.Страница Razor.

Страница BasicPartial очень проста - была сгенерирована из шаблона Visual Studio 2017 - Добавить ... Страница Razor ... Все выглядит так:

@page
@model IndexModel
@*
    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
*@
<div>This is the text and the user name is @(Model.UserName).</div>

На самом деле, единственная важная часть - это место, где я читаю значение свойства UserName из переданного в Model.Вы можете видеть, что я также определил @model как IndexModel вверху.

Основная проблема - модель ВСЕГДА пуста

Когда я запускаю это очень простопример.Приложение сообщает мне, что объект Model имеет значение null.

Model is null

Вы можете полагать, что это UserName, что NULL, но если я поставлю оченьпростая директива вверху, например

<div>@Model</div> 

Затем она говорит мне, что Model является нулем, хотя я знаю, что передаю ее.

Знаете ли вы, почему она нулевая?

1 Ответ

0 голосов
/ 25 апреля 2018

Если я внесу одно изменение в файл BasicPartial.cshtml, модель больше не будет иметь значение null.

Все, что мне нужно сделать, это удалить директиву @page, чтобы файл BasicPartial.cshtml теперь выглядел следующим образом:

@model IndexModel
@*
    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
*@
<div>This is the text and the user name is @(Model.UserName).</div>

Теперь все работает отлично. Объект Model является допустимым объектом со значением свойства, установленным, как ожидается. (См выделенный текст на изображении ниже.)

model is no longer null

...