Asp.net mvc 验证在部分视图中不起作用

Asp.net mvc 验证在部分视图中不起作用,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-2,partial-views,partial,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 2,Partial Views,Partial,我有一个索引页面,它有两个部分视图:login和register Login.cshtml @model Project.ViewModel.UserModel <div style="position:inherit;"> @using (Html.BeginForm("_Login", "account")) { @Html.ValidationSummary(true) <div class="label">@Html.Label("Usernam

我有一个索引页面,它有两个部分视图:login和register

Login.cshtml

@model Project.ViewModel.UserModel

<div style="position:inherit;">
@using (Html.BeginForm("_Login", "account"))
{
    @Html.ValidationSummary(true)
    <div class="label">@Html.Label("Username")</div>
    <div class="field">@Html.TextBoxFor(m => m.Username)</div>
    <div class="error">@Html.ValidationMessageFor(model => model.Username)</div>

    <div class="label">@Html.Label("Password")</div>
    <div class="field">@Html.PasswordFor(m => m.Password)</div>
    <div class="error">@Html.ValidationMessageFor(model => model.Password)</div>

    <input class="field" id="submit" type="submit" value="Login" />
}
UserModel.cs

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace ProjectHub.ViewModel
{
    public class UserModel
    {
         [Required(ErrorMessage="Username is Required")]
         public string Username { get; set; }
         [Required(ErrorMessage = "Password is Required")]
         public string Password { get; set; }
         [Required(ErrorMessage = "Password is Required")]
         public string ConfirmPassword { get; set; }
         [Required(ErrorMessage = "Name is Required")]
         public string FullName { get; set; }
         [Required(ErrorMessage = "Email is Required")]
         public string Email { get; set; }
         [Required(ErrorMessage = "Country is Required")]
         public string Country { get; set; }
     }
 }
当我像这样按下注册按钮时,我得到

如果使用RedirectToAction方法,则不会出现验证错误。
请告诉我。

两个部分不应使用相同的视图模型。您应该有两个不同的视图模型

例如:

public class LoginViewModel
{
    [Required(ErrorMessage="Username is Required")]
    public string Username { get; set; }

    [Required(ErrorMessage = "Password is Required")]
    public string Password { get; set; }
}
对于部分登记册:

public class RegisterViewModel
{
     [Required(ErrorMessage="Username is Required")]
     public string Username { get; set; }

     [Required(ErrorMessage = "Password is Required")]
     public string Password { get; set; }

     [Required(ErrorMessage = "Password is Required")]
     public string ConfirmPassword { get; set; }

     [Required(ErrorMessage = "Name is Required")]
     public string FullName { get; set; }

     [Required(ErrorMessage = "Email is Required")]
     public string Email { get; set; }

     [Required(ErrorMessage = "Country is Required")]
     public string Country { get; set; }
}
然后,主视图模型应聚合这两个视图模型:

public class MyViewModel
{
    public LoginViewModel Login { get; set; }
    public LoginViewModel Register { get; set; }
}
然后:

<div id="registerbox">
    @Html.Partial("_Register", Model.Login)
</div>
<div id="loginbox">
    @Html.Partial("_Login", Model.Register)
</div>

@Html.Partial(“_Register”,Model.Login)
@Html.Partial(“_Login”,Model.Register)

在视图中为JQuery脚本添加以下引用。
我经历了同样的情况,它解决了我的问题

"~/Scripts/jquery.unobtrusive*"
"~/Scripts/jquery.validate*"

请回答我的问题,我被卡住了,无法继续。请帮助我展示你的模型
项目。ViewModel.UserModel
@Yasser,先生,我也添加了UserModel。先生,实际上在这里,当我尝试发布一个方法时,另一个发布方法也在执行。请引导我也尝试了这个方法。但是,同样的错误。我认为它应该是Register和login controller的返回类型。我想重定向到同一个页面,即account/index,但它可以进入account/Register或/login。请帮助我确认mvc项目模板也内置于这两个视图模型中。@Darin Dimitrov,我在“new Model.login”和“new Model.Register”中出错@DarinDimitrov“new Model.Login”上的错误是“Model是一个属性,但使用起来像一个类型”。是的,我的示例中有一个输入错误。在Html.Partial调用中不应该有
new
关键字,因为我们没有调用构造函数。
public class MyViewModel
{
    public LoginViewModel Login { get; set; }
    public LoginViewModel Register { get; set; }
}
<div id="registerbox">
    @Html.Partial("_Register", Model.Login)
</div>
<div id="loginbox">
    @Html.Partial("_Login", Model.Register)
</div>
"~/Scripts/jquery.unobtrusive*"
"~/Scripts/jquery.validate*"