我正在在ASP.NET Core 2.0 MVC上开发Web应用程序,有一个注册模式表格将在所有页面上使用,无法理解我应该如何做用户模型绑定,因为每个页面都有自己的模型。
例如,有一个新闻页面将使用新闻模型,而在该页面上,用户将要注册或登录(主要布局中集成的2个模态表单(。
下面是注册模式的表单部分:
<form action="/Account/RegisterAccount" method="post">
@Html.AntiForgeryToken()
<div class="cfield">
<input name="username" type="text" placeholder="Username" />
</div>
<div class="cfield">
<input name="email" type="text" placeholder="E-mail address" />
</div>
<div class="cfield">
<input name="password" type="password" placeholder="Password" />
</div>
<div class="cfield">
<input type="password" placeholder="Confirm Password" />
</div>
<button type="submit">Register</button>
</form>
我到目前为止所做的只是在没有模型的情况下仅提交表单数据,但是我认为最好找到一种绑定模型的方法,以便我也可以进行模型验证。
另外,如果有人可以给我一个建议,那就是管理登录用户的最佳实践,那将是一个很好的帮助。
这是我在这里的第一篇文章,我在Core和MVC方面是全新的。
从不,从不,永远不要将模型附加到布局上。只是不要。此处的正确方法是视图组件。创建一个ViewComponents
目录,然后在其中添加类似SignUpViewComponent.cs
的类文件。在该文件中,您需要以下内容:
public class SignUpViewComponent : ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync()
{
// set up your model
return View(model);
}
}
查看组件支持注入,因此您可以遵循传统的di模式,即添加一个构造函数,并使用要注入的参数并用这些值将私有字段设置为私有字段。如果您需要利用它来构建模型,这使您可以轻松地引入上下文。
。然后,创建视图ViewsSharedComponentsSignUpDefault.cshtml
。在该文件中,您可以根据需要将模型设置为注册表单模型,然后使用该模型添加您的注册表格HTML。
最后,在您的布局中,添加以下行,您希望注册表格出现:
@await Component.InvokeAsync("SignUp")
有关查看组件的更多信息,请参阅文档。