如何从MVC迁移到Blazor服务器端?



我正在将我的应用程序从MVC(不是Razorpages)迁移到Blazor。迁移标记和模型非常简单。

然而,我将如何迁移控制器动作?例如,我有一个带有2个动作的控制器:

[HttpGet]
[AllowAnonymous]
public IActionResult Register(string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
return View();
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await _signInManager.SignInAsync(user, isPersistent: false);
return RedirectToLocal(returnUrl);
}
AddErrors(result);
}
return View(model);
}

如何将上述操作迁移到Blazor?

您提供的代码用于注册用户,也许您可以考虑在Blazor服务器端应用程序中使用Scaffold Identity页面(它将使用razor页面,而不是Blazor组件)。然后,使用这些页面来管理用户和角色。

如果你不想使用脚手架标识页,并且想自己创建Blazor组件,你可以创建一个Register组件,然后在@code块中编写组件逻辑和事件处理。查看以下文章:

创建和使用ASP。. NET Core Razor组件

ASP。. NET Core Blazor表单和验证

如果你想在表单验证后导航到另一个页面,你可以使用NavigationManager.NavigateTo()方法重定向到另一个页面,代码如下:

@page "/fetchdata"
@using BlazorApp3.Data
@inject WeatherForecastService ForecastService
@inject NavigationManager NavigationManager
<div>
@*display records in the web page*@
</div>
<button class="btn btn-primary" @onclick="submit">
Submit
</button>
@code {
private WeatherForecast[] forecasts;
protected override async Task OnInitializedAsync()
{
forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
}
private void submit(MouseEventArgs e)
{
NavigationManager.NavigateTo("/counter");
}
}

相关内容

  • 没有找到相关文章

最新更新