asp.net 核心模型更改未显示在前端(剃刀)

7rtdyuoh  于 2023-03-31  发布在  .NET
关注(0)|答案(1)|浏览(134)

我已经启动了一个新的asp.net核心应用程序,并且我能够从模型中获取要显示的值-但只能获取文件开头的属性中的值。
如果我在运行时更改它们,更改不会显示-但是通过我的调试器,我可以看到模型值实际上是更改为正确的值。这可能与执行的方式或顺序有关。
这是我的开始:

public class IndexModel : PageModel
{
    private readonly ILogger<IndexModel> _logger;

    public string telephone { get; set; } = "empty";
    public IndexModel(ILogger<IndexModel> logger)
    {
        _logger = logger;
        LoadData();
    }

    private async void LoadData()
    {
        var userService = new RemoteUserService();
        var test = await userService.GetItemByEmail("asd@asd.de");
        if (test != null)
        {
            telephone = test[0].Telephone;
        }
    }

    public void OnGet()
    {

    }
}

CodeBehind:

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
    <p>@Model.telephone</p>
</div>

同样,属性被正确地找到了,只是一旦RemoteUserService下载了值,数据就不会改变。
编辑:一个问题似乎是没有等待对负载数据的调用...

juud5qan

juud5qan1#

所以问题是我没有等待结果。这里会起作用:

private async Task LoadData(string email)
    {
        var userService = new RemoteUserService();
        var test = await userService.GetItemByEmail(email);

        if (test != null)
        {
            telephone = test[0].Telephone;
        }

    }

    public async Task<IActionResult> OnGet()
    {
        await LoadData("asd@asd.de");
        return Page();
    }

相关问题