gpt4 book ai didi

asp.net-mvc - MVC 日期时间验证失败

转载 作者:行者123 更新时间:2023-12-02 19:53:47 25 4
gpt4 key购买 nike

我发现了很多模拟问题,但没有一个有效的、干净的解决方案。我看到很多自定义代码可以让它工作,但这是为什么呢?难道这从一开始就不起作用吗?

我认为奇怪的是,在 IE9 中它可以工作,但在 Firefox 和 Chrome 中却失败了。每次我在 Firefox 或 Chrome 中尝试时,我都会收到消息“生日字段必须是日期”。

当我在新的 MVC 4 RTM 项目中尝试下面的代码时,我无法让它工作。我在所有浏览器中看到 DateTime.Now 默认为 dd-MM-yyyy(荷兰),但我无法在 Firefox 和 Chrome 中提交它。

全局化标签未在 web.config 中设置,因此它必须使用默认值。我来自荷兰,所以我想它应该具有客户文化。

public class RegisterModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }

[Required]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
//[DataType(DataType.Date)]
public DateTime Birthday { get; set; }
}

[AllowAnonymous]
public ActionResult Register()
{
RegisterModel vm = new RegisterModel()
{
Birthday = DateTime.Now
};
return View(vm);
}

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{
//WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
//WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}

// If we got this far, something failed, redisplay form
return View(model);
}

标记

<!-- language: lang-none -->
@model DateTimeWithDatePicker.Models.RegisterModel
@{
ViewBag.Title = "Register";
}

<hgroup class="title">
<h1>@ViewBag.Title.</h1>
<h2>Create a new account.</h2>
</hgroup>

@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary()

<fieldset>
<legend>Registration Form</legend>
<ol>
<li>
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
</li>
<li>
@Html.LabelFor(m => m.Birthday)
@Html.EditorFor(m => m.Birthday)
</li>
</ol>
<input type="submit" value="Register" />
</fieldset>
}

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

最佳答案

我能够通过修改日期的 jQuery 验证器函数来解决这个问题:

 <script type="text/javascript">

$(function () {

var dateFormat="dd/mm/yy"; // en-gb date format, substitute your own

$("#Birthday").datepicker({
"dateFormat": dateFormat
});

jQuery.validator.addMethod(
'date',
function (value, element, params) {
if (this.optional(element)) {
return true;
};
var result = false;
try {
$.datepicker.parseDate(dateFormat, value);
result = true;
} catch (err) {
result = false;
}
return result;
},
''
);

});

关于asp.net-mvc - MVC 日期时间验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12105316/

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