2010-05-17 7 views
0

안녕하세요, 저는 처음으로 xval을 사용하고 있는데, 필수 입력란에 대해 잘 작동하는 것으로 보입니다. 그러나 일부 문제가 발생했습니다. 먼저 boolean과 클라이언트도 검증하지 않는 것 같습니다. 유효성 검사는 나를 위해 작동하지 않습니다, 이것은 나를 위해 주요 문제가 아니에요, 내가 정말로 일해야 하나는 stringlength 속성입니다. 문자열 길이가 초과 될 때 양식이 게시되지 않기 때문에 무언가를하는 것 같습니다. 그러나 사용자에게 분명히 원하지 않는 오류 메시지가 표시되지 않습니다. 아무도이를 성공적으로 수행 할 수 있습니까?asp.net mvc xval 유효성 검사

내 모델은 HTML이 부분 클래스에 대한이

<div id="results" title="Upload results"/> 
    <form id="myForm" action="<%=Url.Action("New") %>" method="post" enctype="multipart/form-data"> 
    <% Html.EnableClientValidation(); %> 

    <%= Html.ValidationSummary() %> 
    <table> 
     <tr> 
       <td> <%=Html.Label("File")%></td> 
       <td> 
        <input type="file" id="file1" name="fileUpload" /> <br /> 
        <%=Html.SubmitButton<DocumentController>(x => x.Upload(), "GetImage", "")%> 
       </td> 
       <td> 
        <%=Html.ValidationMessage("file1")%> 
       </td> 
     </tr> 
     <tr> 
       <td> <%=Html.Label("Visible")%></td> 
       <td> 
        <%= Html.RadioButton("visibility",true,true) %>true 
        <%= Html.RadioButton("visibility", false)%>false 
       </td> 
       <td> 
        <%= Html.ValidationMessage("visibility")%> 
       </td> 

     </tr> 
     <tr> 
       <td> <%=Html.Label("Title")%></td> 
       <td> <%=Html.TextBox("doc.title")%></td>   
       <td> <%= Html.ValidationMessage("doc.title")%></td> 
     </tr> 
     <tr> 
       <td> <%=Html.Label("Description")%></td> 
       <td><%= Html.TextArea("doc.description")%></td> 
       <td><%= Html.ValidationMessage("doc.description")%></td> 
     </tr> 
     <tr> 
       <td> <%=Html.Label("Summary")%></td> 
       <td> <%= Html.TextArea("doc.summary")%></td> 
       <td> <%= Html.ValidationMessage("doc.summary")%></td> 
     </tr> 
     <tr> 
       <td> <%=Html.Label("Filetype")%></td> 
       <td> <%= Html.DropDownList("Filetype_id", (IEnumerable<SelectListItem>)ViewData.Model.AllFiletypesList)%> </td> 

       <td> <%= Html.ValidationMessage("doc.Filetype_id")%> </td> 
     </tr> 
     <tr> 
       <td> <%=Html.Label("Category")%></td> 
       <td><%= Html.DropDownList("cat.parent_id", (IEnumerable<SelectListItem>)ViewData.Model.AllCategoriesList, "-please select item-", new { className = "unselected" })%> </td> 
      <td><%= Html.ValidationMessage("cat.parent_id")%> </td> 
     </tr> 

     <% 
      if (Session["TempFolder"] == null)  
      { 
       for (int i = 1; i < 6; i++) 
       { %> 
        <tr> 
         <td> <%=Html.Label("Shot "+i.ToString()) %> </td> 
         <td><input type="file" id="image_<%= i.ToString() %>" name="image_<%= i.ToString() %>" /></td> 
        </tr> 
     <%  } 
      }%> 

     <tr> 
       <td><input type="submit" value="save"/></td> 
     </tr> 
</table> 
</form>  
</div> 

코드처럼 이동이

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.ComponentModel.DataAnnotations; 
namespace PitchPortal.Core 
{ 
    public class DocumentMetadata 
    { 

     //[Required] 
     // public bool visibility { get; set; } 


     [Required,StringLength(10, ErrorMessage = "title is too long")] 
     public string title { get; set; } 

     [Required, StringLength(10, ErrorMessage = "description is too long")]  
     public string description { get; set; } 

     [Required, StringLength(10, ErrorMessage = "summary is too long")]  
     public string summary { get; set; } 

    } 
} 

같이 간다 여기

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Data.Linq; 
using System.Web; 
using System.IO; 
using System.Configuration; 
using xVal.ServerSide; 
using System.Web.Mvc; 
using PitchPortal.Core.Repositories; 
using System.Web.Script.Serialization; 
using System.ComponentModel.DataAnnotations; 
using PitchPortal.Core.Extensions; 
namespace PitchPortal.Core 
{ 
    [MetadataType(typeof(DocumentMetadata))] 

    public partial class Document : IPostedFile 
    { 

     IRepository<FileType> IFiletypeRepository = new Repository<FileType>(new DataContextProvider(new ConnectionStringProvider(ConfigurationManager.AppSettings["ConnectionString"]))); 
     static ILoggingService logger = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<ILoggingService>(); 


     public int DownloadCounter 
     { 
      get 
      { 
       return this.Downloads1.Count; 
      } 
     } 

     [ScriptIgnore] 
     public bool IsNewDocument 
     { 
      get { return this.document_id<1; } 
     } 


     public string clientClassPath 
     { 
      get { return "DocumentVO"; } 
     } 

     public string VersionGuid 
     { 
      get; 
      set; 
     } 

     [ScriptIgnore] 
     public virtual HttpPostedFileBase PostedFile 
     { 
      get; 
      set; 
     } 
     [ScriptIgnore] 
     public string BasePath 
     { 


      get 
      { 


       return PathExtensions.Build(new string[] { ConfigurationManager.AppSettings["Root"], Category1.GetFamilyTreePath(), title }); 


      } 


     } 




    } 


} 

답변

0

입니다 당신은 넣어 잊었 :

<%= Html.ClientSideValidation("doc", typeof(Document)) 
     .UseValidationSummary("validationSummary") %> 

과 (고마워, 당신이 나에게 얼마나 큰 의미 몰라요)를 stringlength 문제의 아주 종류 만하지 않습니다, 나는 그것이 이해 클라이언트 측 유효성 검사를 위해 작동 한 <%= Html.ValidationSummary() %> bettween tags <div id="validationsummary">and </div>

+0

감사 그레을 넣어 의미가 없습니다. 그 문제에 대한 해결책이 있습니까? – mctayl

+0

문서 클래스 코드를 게시 할 수 있습니까? – Gregoire

+0

Linq와 버디/메타 데이터 클래스를 사용하고 있습니다.이 클래스는 이전에 게시 한 클래스입니다. 감사합니다 – mctayl