Pregunta

Hola estoy usando xval por primera vez, parece que funcionan bien para los campos requeridos, Sin embargo estoy teniendo algunos problemas En primer lugar, no parece booleanos validar y también la validación del cliente no está funcionando para mí, esto no es un problema importante para mí, el que realmente necesito el trabajo es propiedad StringLength. Parece que hacer algo porque el formulario no se registró cuando se supera la longitud de cadena, sin embargo, ningún mensaje de error se muestra al usuario que es, obviamente, no lo que yo quiero, nadie ha sido capaz de hacer esto con éxito?

Mi modelo es la siguiente

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; }

    }
}

el html es la siguiente

<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>

El código de la clase parcial es aquí

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 });


            }


        } 




    }


}
¿Fue útil?

Solución

Se le olvidó poner:

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

y poner su <%= Html.ValidationSummary() %> bettween tags <div id="validationsummary">and </div>

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top