【发布时间】:2017-10-17 20:17:27
【问题描述】:
我的cshtml文件中有这个
<div class="login">
@await Html.PartialAsync("_Login")
</div>
<div class="register">
@await Html.PartialAsync("_Register")
</div>
我的部分看起来像这样
_登录:
@using Microsoft.AspNetCore.Identity
@using project.Models
@model LoginViewModel
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
<form asp-controller="Account" asp-action="Login" asp-route-returnurl="@ViewData["ReturnUrl"]" method="post" class="form-horizontal">
...
<button id="loginBtn" type="submit" class="btn btn-default">Log in</button>
</form>
_注册:
@using Microsoft.AspNetCore.Identity
@using project.Models
@model RegisterViewModel
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
<form asp-controller="Account" asp-action="Register" asp-route-returnurl="@ViewData["ReturnUrl"]" method="post" class="form-horizontal">
...
<button id="registerBtn" type="submit" class="btn btn-default">Register</button>
</form>
我的想法是让两个 div 之一始终具有 display:none (最初它是第二个具有此属性的),因此用户一次只能与一个表单交互。但是,当我单击 [登录] 按钮时,我收到此错误:
InvalidOperationException:传递到 ViewDataDictionary 的模型项的类型为“cartoondrawme.Models.AccountViewModels.LoginViewModel”,但此 ViewDataDictionary 实例需要“cartoondrawme.Models.AccountViewModels.RegisterViewModel”类型的模型项。
我的问题是,我是否有缺陷,它是什么,或者这种方法完全错误,在这种情况下 - 什么是正确的方法?
我不明白一个表单的提交按钮如何触发另一个表单。如果我删除第二个 div,它可以正常工作。
谢谢。
【问题讨论】:
-
我遇到了同样的问题。似乎是一个aspnet mvc核心的东西。曾经与 as.net mvc 一起正常工作。如果我想出一个解决方案,我会告诉你
标签: asp.net viewmodel partial-views asp.net-mvc-partialview