.net core 2.2 MVC: Razor Model возвращает исключение нулевой ссылки - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть очень простой проект в ASP.NET Core 2.2, структура проекта выглядит следующим образом:

Структура кода

Код, который я использую вСтраница index.cshtml выглядит следующим образом:

@page
@using TaskManager.Views.Home
@model IndexModel
<p> Hello @DateTime.Now @Model.test</p>

IndexModel.cs

namespace TaskManager.Views.Home
{
    public class IndexModel : PageModel
    {
        public string test { get; set; }

        public void OnGet()
        {
            test = "IndexModel Test Variable"; 
        }
    }
}

HomeController.cs

namespace TaskManager.Controllers
{
     public class HomeController : Controller
     {
         public IActionResult Index()
         {
             return View();
         }
     }
}

Startup.cs

  public class Startup
  {
      public void ConfigureServices(IServiceCollection services)
      {
          services.AddMvc();
      }

      public void Configure(IApplicationBuilder app, IHostingEnvironment env)
      {
          if (env.IsDevelopment())
          {
              app.UseDeveloperExceptionPage();
          }

          app.UseDefaultFiles();
          app.UseMvcWithDefaultRoute();
       }
   }

Тем не менее, я все еще получаю исключение NullReference.Что я делаю не так?

https://i.ibb.co/NL04rgQ/Capture.png

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Вам не нужен контроллер со страницей Razor, файл "cshtml.cs", который имеет "OnGet", также служит моделью.Ваша модель индекса верна, вам не нужен контроллер для страницы Razor.По умолчанию переход к / Index приведет к извлечению «Index.cshtml» в вашем каталоге Pages (вы можете изменить каталог по умолчанию в Configure Services, если это необходимо, если это что-то отличное от страниц), например:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().AddRazorPagesOptions(options =>
    {
        options.RootDirectory = "/Content";
    });
}
0 голосов
/ 31 декабря 2018

Как указывает DavidG, вам нужен экземпляр вашей модели.

public IActionResult Index(IndexModel indexmodel)
{
    return View(indexmodel);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...