Blazor - 客户端无法使用 dll 中定义的模型

Blazor - Client can't use model defined in dll

我在尝试使用在 dll 中定义的模型时遇到问题。我已将命名空间导入 _imports.razor 中的模型。但是,当我尝试在页面上使用它时,我仍然收到错误消息“名称 'UserRegisterViewModel' 在当前上下文中不存在”。有谁知道问题可能是什么?谢谢!

编辑: 我在尝试使用 UserRegisterViewModel 时在 html 中收到错误,例如 <EditForm Model="UserRegisterViewModel" OnValidSubmit="HandleRegistration">

型号

    public class UserRegisterViewModel
    {
        [Required]
        public string Email { get; set; }
        [Required]
        public string Password { get; set; }
    }

页数

@page "/register"
@inject IAuthService AuthService
@inject NavigationManager NavigationManager

    <h1>Register</h1>

    @if (ShowErrors)
    {
        <div class="alert alert-danger" role="alert">
            @foreach (var error in Errors)
            {
                <p>@error</p>
            }
        </div>
    }

    <div class="card">
        <div class="card-body">
            <h5 class="card-title">Please enter your details</h5>
            <EditForm Model="UserRegisterViewModel" OnValidSubmit="HandleRegistration">
                <DataAnnotationsValidator />
                <ValidationSummary />

                <div class="form-group">
                    <label for="email">Email address</label>
                    <InputText Id="email" class="form-control" @bind-Value="UserRegisterViewModel.Email" />
                    <ValidationMessage For="@(() => UserRegisterViewModel.Email)" />
                </div>
                <div class="form-group">
                    <label for="password">Password</label>
                    <InputText Id="password" type="password" class="form-control" @bind-Value="UserRegisterViewModel.Password" />
                    <ValidationMessage For="@(() => UserRegisterViewModel.Password)" />
                </div>
                <button type="submit" class="btn btn-primary">Submit</button>
            </EditForm>
        </div>
    </div>

    @code {

        private UserRegisterViewModel RegisterModel = new UserRegisterViewModel();
        private bool ShowErrors;
        private IEnumerable<string> Errors;

        private async Task HandleRegistration()
        {

            ShowErrors = false;

            var result = await AuthService.Register(UserRegisterViewModel);

            if (result.Successful)
            {
                NavigationManager.NavigateTo("/login");
            }
            else
            {
                Errors = result.Errors;
                ShowErrors = true;
            }
        }

    }

谢谢!

Model="UserRegisterViewModel" 你绑定到类型而不是实例 RegisterModel

@page "/register"
@inject IAuthService AuthService
@inject NavigationManager NavigationManager

<h1>Register</h1>

@if (ShowErrors)
{
    <div class="alert alert-danger" role="alert">
        @foreach (var error in Errors)
        {
            <p>@error</p>
        }
    </div>
}

<div class="card">
    <div class="card-body">
        <h5 class="card-title">Please enter your details</h5>
        <EditForm Model="RegisterModel" OnValidSubmit="HandleRegistration">
            <DataAnnotationsValidator />
            <ValidationSummary />

            <div class="form-group">
                <label for="email">Email address</label>
                <InputText Id="email" class="form-control" @bind-Value="RegisterModel.Email" />
                <ValidationMessage For="@(() => RegisterModel.Email)" />
            </div>
            <div class="form-group">
                <label for="password">Password</label>
                <InputText Id="password" type="password" class="form-control" @bind-Value="RegisterModel.Password" />
                <ValidationMessage For="@(() => RegisterModel.Password)" />
            </div>
            <button type="submit" class="btn btn-primary">Submit</button>
        </EditForm>
    </div>
</div>

@code {

    private UserRegisterViewModel RegisterModel = new UserRegisterViewModel();
    private bool ShowErrors;
    private IEnumerable<string> Errors;

    private async Task HandleRegistration()
    {

        ShowErrors = false;

        var result = await AuthService.Register(RegisterModel);

        if (result.Successful)
        {
            NavigationManager.NavigateTo("/login");
        }
        else
        {
            Errors = result.Errors;
            ShowErrors = true;
        }
    } 
}