У меня есть методы, которые получают данные из API службы ссылки. Как мне получить эти данные для отображения на странице Razor? - PullRequest
0 голосов
/ 03 января 2019

У меня есть работающее консольное приложение .NET Core 2.1, которое отображает информацию о персонаже на экране.Данные собираются из сервисных справочников, которые выполняют вызовы API.

Теперь я хочу сделать его веб-приложением.Поэтому я создал новое веб-приложение .NET Core 2.1 с Razor (cshtml) в Visual Studio 2017.

Я добавил все методы и ссылки на службы из консольного приложения и исправил все ошибки.

Итак, теперь у меня есть веб-приложение, которое строит, но оно просто отображает страницы «фиктивных данных ASP.NET Core Sample», которые были автоматически созданы при создании проекта.

Но я не уверен, какполучить мои методы для отображения данных.Раньше я просто использовал бы «Console.WriteLine» следующим образом:

    public static void PrintCharacter(Character pc)
    {
        Console.WriteLine("Character Name =  " + pc.Name);
        ListCharactersResponse response = GetCharacter(pc.Id);

        foreach (Attribute attr in response.Results)
        {
            Console.WriteLine("Character Attributes: " + attr.Strength + " | " + attr.Intelligence + " | " + GetMagicPoints(attr.Intelligence, attr.Wisdom));
        }

    }

Просматривая примеры страниц, которые были сгенерированы, я вижу такие вещи:

public class AboutModel : PageModel
{
    public string Message { get; set; }

    public void OnGet()
    {
        Message = "Your application description page.";
    }
}

ЯЯ не совсем уверен, как получить мои данные из моих методов, таких как PrintCharacter выше, на страницы .cshtml.

Есть ли что-то еще, что мне нужно сделать в Visual Studio?Или мне нужно написать какой-то метод, который отображает данные на веб-странице вместо консоли?

Спасибо!

1 Ответ

0 голосов
/ 04 января 2019

В Razor Pages вам просто нужно использовать @Model.Message для отображения переменной, определенной непосредственно в PageModel.ViewData включено, в то время как ViewBag не разрешено. Ссылка на Просмотр данных на страницах бритвы .

public class AboutModel : PageModel
{
    public string Message { get; set; }

    public void OnGet()
    {
       Message = "Your application description page.";
       ViewData["message"] = "test message";
    }
}

Просмотр

@page
@model AboutModel
<h1>@ViewData["message"]</h1>
<h1>@Model.Message</h1>

Обновление:

Чтобы прочитать данные из представленного статического метода, вам нужно вернуть данные из метода и знать его пространство имен для его вызова.См. Использование статических переменных в Razor .

Например, создайте статический метод в классе ConsoleApp.

public class ConsoleClass
{
    public static List<string> PrintCharacter(Character pc)
    {
        Console.WriteLine("Character Name =  " + pc.Name);
        ListCharactersResponse response = GetCharacter(pc.Id);
        List<string> Test = new List<string>();

        foreach (Attribute attr in response.Results)
        {
            Test.Add("Character Attributes: " + attr.Strength + " | " + attr.Intelligence + " | " + GetMagicPoints(attr.Intelligence, attr.Wisdom));
        }
        return Test;
   }
}

В PageModel, где нам нужно вызватьМетод:

[BindProperty]
public Character Character { get; set; }
public List<string> DataStored { get; set; }

public IActionResult OnGet()
{
    DataStored = ConsoleApp.ConsoleClass.PrintCharacter(Character);//use correct namespace
}

В представлении:

@foreach (var item in Model.DataStored)
{
   <h3>@item</h3>
}

Вы также можете вызвать статический метод непосредственно в представлении, например:

@foreach (var item in ConsoleApp.ConsoleClass.PrintCharacter(Model.Character))
{
   <h3>@item</h3>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...