如何解决如何从 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
块中编写组件逻辑和事件处理。查看以下文章:
Create and use ASP.NET Core Razor components
ASP.NET Core Blazor forms and validation
如果您想在表单验证后导航到另一个页面,您可以使用 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");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。