Asp.net mvc 3 验证未正常运行mvc 3
我正在做一个项目,我的验证有一些问题 这是我的模型:Asp.net mvc 3 验证未正常运行mvc 3,asp.net-mvc-3,jquery-validate,validation,Asp.net Mvc 3,Jquery Validate,Validation,我正在做一个项目,我的验证有一些问题 这是我的模型: [ColumnMap("Guest_ID")] public int Guest_ID { get; set; } [ColumnMap("FirstName")] [Required] [Display(Name="FirstName")] public string FirstName { get; set; } [ColumnMap("LastName")] public string LastName { get; set; }
[ColumnMap("Guest_ID")]
public int Guest_ID { get; set; }
[ColumnMap("FirstName")]
[Required]
[Display(Name="FirstName")]
public string FirstName { get; set; }
[ColumnMap("LastName")]
public string LastName { get; set; }
[ColumnMap("Phone")]
[Required]
[MaxLength(10)]
public Nullable<int> Phone { get; set; }
[ColumnMap("AdrOras")]
[Required]
public string AdrOras { get; set; }
以下是我的观点:
@model LicentaTest.Models.ReservationView
@using JQueryUIHelpers
@{
ViewBag.Title = "Checkout";
}
<head>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.19.min.js" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.unobtrusive.min.js")" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui.unobtrusive-0.5.0.min.js" type="text/javascript"></script>
</head>
<script type="text/javascript">
$(function () {
$('input[type=text], textarea, input[type=password]').width(200);
$('#valSum').hide();
$('form').bind('invalid-form.validate', function (error, element) {
$('#valSum').show("slow");
return false;
});
});
</script>
@if (!ViewData.ModelState.IsValid) {
<script type="text/javascript">
$(function () {
$('#valSum').show("slow");
});
</script>
}
@using (Html.BeginForm("CreateReservation", "Reservation", FormMethod.Post))
{
@Html.ValidationSummary(true)
<form class="form">
<div class = "styler">
<div id = "valSum" class="ui-state-error ui-corner-all" style="padding: 0 .7em;width:500px">
</div>
<h6>Completare Date Rezervare</h6>
<fieldset class="ui-widget">
<legend class="ui-state-legend-default ui-corner-top ui-corner-bottom">Date personale</legend>
@Html.Hidden("RoomID")
<div class="editor-label">
@Html.Label("FirstName")
@Html.TextBox("FirstName")
@Html.ValidationMessage("FirstName","Numele trebuie introdus")
</div>
<div class="editor-label">
@Html.Label("LastName ")
@Html.TextBox("LastName")
</div>
<div class="editor-label">
@Html.Label("Phone")
@Html.TextBox("Phone")
@Html.ValidationMessage("Phone","Numarul trebuie sa fie din maxim 10 cifre")
</div>
<div class="editor-label">
@Html.Label("Data Nasterii")
@(Html.JQueryUI().Datepicker("Birthday").MaxDate(DateTime.Now))
</div>
<div class="editor-label">
@Html.Label("Tip CLient")
@Html.DropDownList("GuestTypeID", new SelectList(Model.client.AsEnumerable(), "GuestTypeID", "GuestType"))
</div>
</fieldset>
<fieldset class="ui-widget">
<legend class="ui-state-legend-default ui-corner-top ui-corner-bottom">Adresa</legend>
<div class="editor-label">
@Html.Label("Tara")
@Html.TextBox("Tara")
</div>
<div class="editor-label">
@Html.Label("Oras")
@Html.TextBox("Oras")
@Html.ValidationMessage("Oras","Field is required")
</div>
<div class="editor-label">
@Html.Label("Judet")
@Html.TextBox("Judet")
</div>
<div class="editor-label">
@Html.Label("Strada")
@Html.TextBox("Strada")
</div>
</fieldset>
<fieldset class="ui-widget">
<legend class="ui-state-legend-default ui-corner-top ui-corner-bottom">Perioada rezervare</legend>
<div class="editor-label">
@Html.Label("Data Intrare")
@Html.JQueryUI().Datepicker("Data_Check_in")
</div>
<div class="editor-label">
@Html.Label("Data Iesire")
@Html.JQueryUI().Datepicker("Data_Check_out")
</div>
</fieldset>
<p>
<input type="submit" value="Create" />
</p>
<div>
@Html.ActionLink("Back to List", "Index", "Guest")
</div>
</div>
</form>
}
@model licenstatest.Models.ReservationView
@使用jQueryHelpers
@{
ViewBag.Title=“签出”;
}
$(函数(){
$('input[type=text],textarea,input[type=password]')。宽度(200);
$('#valSum').hide();
$('form').bind('invalid-form.validate',函数(错误,元素){
$('valSum')。show(“slow”);
返回false;
});
});
@如果(!ViewData.ModelState.IsValid){
$(函数(){
$('valSum')。show(“slow”);
});
}
@使用(Html.BeginForm(“CreateReservation”,“Reservation”,FormMethod.Post))
{
@Html.ValidationSummary(true)
完整日期
日期个人
@Html.Hidden(“RoomID”)
@Html.Label(“FirstName”)
@Html.TextBox(“名字”)
@ValidationMessage(“名字”,“Numele trebuie简介”)
@Html.Label(“LastName”)
@Html.TextBox(“LastName”)
@Html.Label(“电话”)
@Html.TextBox(“电话”)
@Html.ValidationMessage(“电话”,“Numarul trebuie sa fie din maxim 10 cifre”)
@Label(“datanasterii”)
@(Html.JQueryUI().Datepicker(“生日”).MaxDate(DateTime.Now))
@Html.Label(“提示客户端”)
@Html.DropDownList(“GuestTypeID”,新选择列表(Model.client.AsEnumerable(),“GuestTypeID”,“GuestType”))
肾上腺
@Html.Label(“塔拉”)
@Html.TextBox(“塔拉”)
@Html.Label(“Oras”)
@Html.TextBox(“Oras”)
@Html.ValidationMessage(“Oras”,“需要字段”)
@Html.Label(“Judet”)
@Html.TextBox(“Judet”)
@Html.Label(“斯特拉达”)
@Html.TextBox(“斯特拉达”)
佩里奥达雷泽瓦酒店
@Html.Label(“数据内部”)
@Html.JQueryUI().Datepicker(“数据签入”)
@标签(“数据Iesire”)
@Html.JQueryUI().Datepicker(“数据检查”)
@ActionLink(“返回列表”、“索引”、“来宾”)
}
当我按下创建按钮时,maxlenght验证正在工作,但所需的字段验证不工作
为什么会发生这种情况我做错了什么您有两个表单相互嵌套。不能有嵌套表单 你有:
@using (Html.BeginForm("CreateReservation", "Reservation", FormMethod.Get)){
<form>...</form>
}
试试这个
从CDN获取jQuery和jQuery UI
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js" type="text/javascript"></script>
您可能希望为该创建屏幕创建一个
ViewModel
(除非我错了,您使用的字段比模型中的字段多,否则您还可以在控制器上接收模型
实例,而不是每个字段),因此您可以传递一个对象(实例)在CreateReservation
方法上。这将使您的工作更轻松,而且您还可以使用@Html.TextBoxFor
此外,为了检查您在控制器上接收到的内容,您可以添加FormCollection
类型的参数。这样,您将能够看到发送到控制器的每个字段
编辑:
根据上面的文本检查一切正常并添加(如果还没有)字段的DataAnnotation后,您将能够使用javascript验证;您可以查看post或更深入的内容您是否尝试过使用编辑器而不是文本框
?我在TextBox
帮助程序中看到了一些奇怪的行为。问题是,只使用editorfor,而不使用TextBox。我需要TextBox,因为当我使用editorfor时,我会将null传输到我的create rezservation方法。您尝试过TextBox吗?像这样:@Html.TextBoxFor(m=>m.FieldName)
当使用textboxfor时,我会将null传输到我的方法听起来你除了验证之外还有其他问题现在的问题是验证只对textboxfor和editorFOR有效,而对textboxfor无效我希望在我的视图中对所有文本输入进行javascrippt验证,但不知道如何进行验证如果你这样做,并将数据注释添加到您将要实现的ViewModel(或Model)字段中。我编辑了我的帖子,添加了一些可能对你有帮助的链接
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.19.min.js" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.unobtrusive.min.js")" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui.unobtrusive-0.5.0.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>