Отображение строки в Asp. Net Core 3.0 MVC ViewModel - PullRequest
0 голосов
/ 28 мая 2020

В настоящее время изучает Asp. Net Core. Сначала я учился со страницами Razor, и все работало нормально, но я отказался от них и предпочел сначала ознакомиться с MVC.

Несмотря на онлайн-курсы и др. c. Я три дня боролся, чтобы получить простую строку для отображения с помощью ViewModel, и теперь мой разум измучен!

Я хочу вставить строку на мою страницу cs html, чтобы строка могла происходят из библиотеки строк. У меня все это было настроено и отлично работало со страницами Razor, но я не могу получить простую строку для отображения с использованием MVC, если я не использую ViewBag. Я хочу использовать ViewModel. Что мне не хватает?

Любая помощь будет принята с благодарностью.

AboutViewModel.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace MyApp.Models
{
    public class AboutViewModel
    {
        public string Title { get; set; }

        public void OnGet()
        {
            Title = "Test";
        }
    }
}

AboutController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Mvc;
using MyApp.Models;

namespace MyApp.Controllers
{
    public class AboutController : Controller
    {
        public IActionResult About()
        {
            return View();
        }
    }
}

About.cs html

@model AboutViewModel
    @{
        ViewData["Title"] = _loc["About Us"];
    }

<body>
    <div>
        @Model.Title
    </div>
</body>

Ошибка:

 NullReferenceException: Object reference not set to an instance of an object.
AspNetCore.Views_About_About.<ExecuteAsync>b__12_2() in About.cshtml, line 22


NullReferenceException: Object reference not set to an instance of an object.
AspNetCore.Views_About_About.<ExecuteAsync>b__12_2() in About.cshtml
+
        @Model.Title
Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.SetOutputContentAsync()
AspNetCore.Views_About_About.ExecuteAsync() in About.cshtml
+
        ViewData["Title"] = _loc["About Us"];
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, bool invokeViewStarts)
Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, string contentType, Nullable<int> statusCode)
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ActionContext actionContext, IView view, ViewDataDictionary viewData, ITempDataDictionary tempData, string contentType, Nullable<int> statusCode)
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext context, ViewResult result)
Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|29_0<TFilter, TFilterAsync>(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)

Мысли:

Я почти уверен, что перехожу здесь со страницами Razor, и мой метод OnGet бесполезен для MVC? Я пробовал вставить в свой контроллер всевозможный код, но ничего не работает.

Ответ на предложение ниже:

Если я изменю свой контроллер на:

    public IActionResult About()
    {
        var viewModel = new AboutViewModel();

        return View(viewModel);
    }

, ошибка исчезает, но строка по-прежнему не отображается.

1 Ответ

2 голосов
/ 28 мая 2020
 public IActionResult About()
    {
        var viewModel = new AboutViewModel();
         viewModel .Title = "Test";
        return View(viewModel);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...