gpt4 book ai didi

javascript - 比较属性不起作用

转载 作者:行者123 更新时间:2023-11-30 16:37:26 26 4
gpt4 key购买 nike

我有带有比较属性的密码和确认密码字段,但它被窃听了?已尝试通过 NuGet 包管理器更新所有内容密码仍然不匹配,即使我输入“123456”,想知道我该怎么办?

enter image description here

  public class AccountsViewModel
{
public class Register
{
[Required]
public string Username { get; set; }

[Required]
[DataType(DataType.Password)]
public string Password { get; set; }

[Compare("Password")]
[DataType(DataType.Password)]
public string ConfirmPassword { get; set; }

}

}

Controller

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create([Bind(Include = "id,username,password")] AccountsViewModel.Register viewModel)
{
if (ModelState.IsValid)
{
account account = new account();
db.accounts.Add(account).username = viewModel.Username;
db.accounts.Add(account).password = viewModel.Password;
await db.SaveChangesAsync();
return RedirectToAction("Index");
}

return View(viewModel);
}

查看

@model trainingmvc.Models.AccountsViewModel.Register

@{
ViewBag.Title = "Create";
}

<h2>Create</h2>


@using (Html.BeginForm("Create", "Accounts", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
<h4>Create a new account.</h4>
<hr />
@Html.ValidationSummary("", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(m => m.Username, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Username, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.Password, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Register" />
</div>
</div>
}

<div>
@Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}

网络配置

   <add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

bundle

  bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));

// Use the development version of Modernizr to develop with and learn from. Then, when you're
// ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
"~/Scripts/modernizr-*"));

bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
"~/Scripts/bootstrap.js",
"~/Scripts/respond.js"));

bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/site.css"));

最佳答案

您的 POST 方法有一个 [Bind]属性

public async Task<ActionResult> Create([Bind(Include = "id,username,password")] AccountsViewModel.Register viewModel)

不包括模型 ConfirmPassword来自绑定(bind)的属性,因此它的值为 null这是无效的(它与 Password 的值不匹配)所以 ModelState添加错误。

AccountsViewModel是一个 View 模型, View 模型永远不需要 Bind属性(因为 View 模型只包含在 View 中编辑的属性)。只需删除该属性,以便绑定(bind)所有属性,您的模型将有效。

关于javascript - 比较属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32514835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com