Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 将单独的模型绑定到主布局_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

Asp.net core 将单独的模型绑定到主布局

Asp.net core 将单独的模型绑定到主布局,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,我正在Asp.Net Core 2.0 MVC上开发一个web应用程序,有一个注册模式表单将在所有页面上使用,但我无法理解如何进行用户模型绑定,因为每个页面都有自己的模型 例如,有一个新闻页面将使用新闻模型,而在该页面上,用户将希望注册或登录(集成在主布局中的两个模式表单) 以下是注册模式的表格部分: <form action="/Account/RegisterAccount" method="post"> @Html.AntiForgeryToken() <div cl

我正在Asp.Net Core 2.0 MVC上开发一个web应用程序,有一个注册模式表单将在所有页面上使用,但我无法理解如何进行用户模型绑定,因为每个页面都有自己的模型

例如,有一个新闻页面将使用新闻模型,而在该页面上,用户将希望注册或登录(集成在主布局中的两个模式表单)

以下是注册模式的表格部分:

<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>    

@Html.AntiForgeryToken()
登记
到目前为止,我所做的只是在没有模型的情况下提交表单数据,但我想也许最好找到一种绑定模型的方法,这样我也可以进行模型验证

另外,如果有人能给我一个关于管理登录用户的最佳实践的建议,那将是一个非常好的帮助


这是我在这里的第一篇文章,我对Core和MVC都是全新的

决不,决不,决不将模型附着到布局。别这样。这里正确的方法是使用视图组件。创建一个
ViewComponents
目录,并向其中添加一个类文件,如
SignUpViewComponent.cs
。在该文件中,您将需要以下内容:

public class SignUpViewComponent : ViewComponent
{
    public async Task<IViewComponentResult> InvokeAsync()
    {
        // set up your model
        return View(model);
    }
}

有关视图组件的更多信息,请参阅。

非常感谢@Chris,这为我省去了很多痛苦,因为我以前不知道ViewComponent的存在。正如您所说,我创建了ViewComponent类和component视图,并将一个新的用户类作为参数“return view(new User());”返回视图。它运行良好,在许多其他地方也很方便。但有一点我不明白,它的文档指示异步调用Invoke方法“公共异步任务InvokeAsync()“但我只有一个类似的代码,那就是返回视图。即使不需要等待视图,它也必须是异步的吗?组件总是异步的。如果视图组件很简单,则可以从方法中删除
async
关键字并返回
Task.FromResult
@await Component.InvokeAsync("SignUp")