2017-04-25 61 views
0

我需要制作具有两种形式的.net核心页面。我已经使所有的工作,但现在我挣扎与asp验证总结,因为我有两个相同的元素在页面上,每当我有表单验证(serverside)的错误,它打印出这两个地方的错误....net core multiple forms on one page validation

我怎样才能区分这些我单击的窗体的错误?

<form asp-controller="Account" asp-action="Login" asp-route-returnurl="@ViewData["ReturnUrl"]" id="loginForm" class="sky-form" method="post"> 

LOGIN INPUTS 

<div asp-validation-summary="All" class="text-danger"></div> 

</form> 

<form asp-controller="Account" asp-action="Register" asp-route-returnurl="@ViewData["ReturnUrl"]" id="registerForm" class="sky-form" method="post"> 

REGISTER INPUTS 

<div asp-validation-summary="All" class="text-danger"></div> 

</form> 
+0

控制器代码是什么样的?大致?同一处理程序是否处理帐户/登录和帐户/注册? –

+0

嗨...我忘了说: 我已经使用了jquery.validate,并且在代码中它确保它能够在相同的控制器中执行单独的动作 –

+0

我有完全相同的问题,您是否找到解决方案? –

回答

0

我没有找到妥善的解决办法,但存在控制方法与ViewData的一种变通方法:

public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null) 
    { 
     ViewData["requestForm"] = "login"; 

public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null) 
    { 
     ViewData["requestForm"] = "register"; 

,然后修改登录表单:

并且寄存器形式:

  <form asp-controller="Account" asp-action="Register" asp-route-returnurl="@ViewData["ReturnUrl"]" id="registerForm" class="sky-form" method="post"> 
       @if(((string)ViewData["requestForm"])=="register") 
       { 
        <div asp-validation-summary="All" class="text-danger "></div> 
       } 

      </form>