Asp.net mvc 验证在部分视图中不起作用
我有一个索引页面,它有两个部分视图:login和register Login.cshtmlAsp.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
@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*"