2011-02-07 32 views
6

Tôi đang cố gắng xác thực ứng dụng khách trong MVC3 bằng chú thích dữ liệu. Tôi đã xem các bài viết tương tự bao gồm cả MVC3 Client side validation not working này cho câu trả lời.Xác thực ứng dụng khách MVC3/Razor Không kích hoạt

Tôi đang sử dụng mô hình dữ liệu EF. Tôi tạo ra một lớp một phần như thế này để xác nhận của tôi.

[MetadataType(typeof(Post_Validation))] 
public partial class Post 
{ 

} 

public class Post_Validation 
{ 
    [Required(ErrorMessage = "Title is required")] 
    [StringLength(5, ErrorMessage = "Title may not be longer than 5 characters")] 
    public string Title { get; set; } 

    [Required(ErrorMessage = "Text is required")] 
    [DataType(DataType.MultilineText)] 
    public string Text { get; set; } 

    [Required(ErrorMessage = "Publish Date is required")] 
    [DataType(DataType.DateTime)] 
    public DateTime PublishDate { get; set; } 
} 

Trang cshtml của tôi bao gồm những điều sau đây.

<h2>Create</h2> 
<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> 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>Post</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Title) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Title) 
      @Html.ValidationMessageFor(model => model.Title) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Text) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Text) 
      @Html.ValidationMessageFor(model => model.Text) 
     </div> 
} 

Config Web:

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

Layout:

<head> 
<title>@ViewBag.Title</title> 
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> 

Vì vậy, Multiline Text tác phẩm chú thích và tạo ra một vùng văn bản. Nhưng không có xác nhận hợp lệ nào làm việc với phía máy khách. Tôi không biết những gì tôi có thể bị mất tích. Bất kỳ ý tưởng ?? tôi có thể đăng thêm thông tin nếu cần. Cảm ơn!

+0

Xin chào, điều này có thể không hoạt động nữa, nhưng tôi chỉ muốn hỏi bạn giải quyết vấn đề này như thế nào? Tôi đang đối mặt với cùng một vấn đề chính xác ở đây, nhưng tôi không thể có được xác nhận cho lĩnh vực văn bản .. ý tưởng nào ?? Cảm ơn ... – shennyL

Trả lời

4

1.) Hãy thử thêm đoạn mã sau vào quan điểm mà bạn đang phê

HtmlHelper.ClientValidationEnabled = true; 
HtmlHelper.UnobtrusiveJavaScriptEnabled = true; 

Tôi không thấy cần phải sửa đổi Web.config, vì vậy bạn có thể xóa

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

Chúc may mắn! Ngoài ra, hãy thử đặt một giá trị xấu đã biết để xem xác thực phía máy khách có được kích hoạt hay không, chú thích bắt buộc dường như không đủ để hiển thị thông báo cho một đầu vào trống.

2.) Đặt các tập lệnh bên dưới vào chế độ xem của bạn, nó sẽ hoạt động.

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

Điều này làm việc, NHƯNG vấn đề của tôi là tôi đã có các ứng dụng trong Views \ web.config, không phải là root \ web.config. Tôi không chắc làm thế nào họ đã trộn lẫn lên, như dự án mặc định đặt chúng trong cấu hình gốc, nhưng nó đã ném tôi cho một vòng lặp. –

-4

Hãy thử để khai báo sử dụng công đối tượng:

public class Post_Validation 
{ 
    [Required(ErrorMessage = "Title is required")] 
    [StringLength(5, ErrorMessage = "Title may not be longer than 5 characters")] 
    public object Title { get; set; } 

    [Required(ErrorMessage = "Text is required")] 
    [DataType(DataType.MultilineText)] 
    public object Text { get; set; } 

    [Required(ErrorMessage = "Publish Date is required")] 
    [DataType(DataType.DateTime)] 
    public object PublishDate { get; set; } 
} 
Các vấn đề liên quan