Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Unique validation
Message
From
27/12/2012 12:59:29
 
General information
Forum:
ASP.NET
Category:
MVC
Environment versions
Environment:
C# 4.0
OS:
Windows 7
Network:
Windows 2003 Server
Database:
MS SQL Server
Miscellaneous
Thread ID:
01560641
Message ID:
01560713
Views:
47
Objects is a horrible namespace name. The name should tell you what it contains. As everything in .Net is a class (and then an object once instantiated), you should look for a more descriptive name.

>>Not sure what you mean. Are you using the MVC pattern without using the ASP.NET MVC libraries ?
>
>I didn't need to use System.Web.Mvc before in my Objects project.
>
>Anyway, I decided it's a small price to pay, so I added it.
>
>We should be able to reuse the Objects in non MVC project as is (in theory).
>
>Of course, alternative solution is to define objects in one project and then view models in Web project. But then I would basically need to duplicate my model.
>
>Right now I defined view model this way:
>
>using System;
>using System.Collections.Generic;
>using System.Linq;
>using System.Web;
>using CardNumbers.Objects;
>
>namespace CardNumbers.Models
>{
>    public class ClientViewModel
>    {
>        public Client Client { get; set; }
>
>        public int id { get; set; }
>    }
>}
>
>So, is there a way to have the Client in the Objects project clean and have some extra validations in ViewModel instead?
>
>E.g. this is how my Client model looks like now:
>
>
>using System;
>using System.Web.Mvc;
>using System.ComponentModel.DataAnnotations;
>using System.ComponentModel;
>
>using DataAnnotationsExtensions;
>using System.ComponentModel.DataAnnotations.Schema;
>using System.Collections.Generic;
>
>namespace CardNumbers.Objects
>{
>    [ComplexType]
>    public class PhoneInfo
>    {
>        [DataType(DataType.PhoneNumber)]
>        
>        [DisplayName("Phone")]
>        [RegularExpression(@"^((\(\d{3}\)|\d{3})\s?)?\d{3}[-\s]?\d{4}\s*$", ErrorMessage = "Please enter valid Phone Number")]
>        public virtual string Phone { get; set; }
>
>        [StringLength(5)]
>        [DisplayName("Ext")]
>        public virtual string Ext { get; set; }
>
>        public bool HasValue
>        {
>            get
>            {
>                return (Phone != null || Ext != null);
>            }
>        }
>
>    }
>
>      [ComplexType]
>      public class ContactDetail
>      {
>          //Constructor
>          public ContactDetail()
>          {
>              phoneInfo = new PhoneInfo();
>          }
>
>          [StringLength(100)]
>          [DisplayName("Contact Name")]
>          [DisplayFormat(NullDisplayText = "")]
>          public virtual string Contact { get; set; }
>
>          [Email]
>          [StringLength(100)]
>          [DataType(DataType.EmailAddress)]
>          [DisplayName("Email")]
>          public virtual string Email { get; set; }
>
>          public virtual PhoneInfo phoneInfo { get; set; }
>          public bool HasValue
>          {
>              get
>              {
>                  return (Contact != null || Email != null || phoneInfo.HasValue);
>              }
>          }
>      }
>
>/// <summary>
>/// Client class (Client No, Client Name, Address, Contact1, Contact2 info, Created By, Modified By (operator and date)
>/// </summary>
>    public class Client
>    {
>        public Client()
>        {
>            Contact1 = new ContactDetail();
>            Contact2 = new ContactDetail();
>     }
>
>        [Key]
>        [Editable(false)]
>        [Column("ClientId",TypeName = "int")]
>        public virtual int Id { get; set; }
>        [Required]
>        [DisplayName("Client No")]
>        [UIHint("Number")]
>        [Column("client_no", TypeName = "smallint")]
>        [Remote("doesClientNoExist", "Client", HttpMethod = "POST", ErrorMessage = "Client Number already exists. Please enter a different Client Number.")]
>        public virtual Int16 Number { get; set; }
>        
>        [Required]
>        [Column("client_name", TypeName = "varchar")]
>        [DisplayName("Client Name")]
>        [MaxLength(30, ErrorMessage = "Client Name should not be longer than 30 characters" )]
>        [MinLength(3, ErrorMessage = "Client Name is too short")]
>        [Remote("doesClientNameExist", "Client", HttpMethod = "POST", ErrorMessage = "Client Name already exists. Please enter a different Client Name.")]
>        public virtual string Name { get; set; }
>
>        [DataType(DataType.MultilineText)]
>        public virtual string Address { get; set; }
>
>        public virtual ContactDetail Contact1 {get; set;}
>        public virtual ContactDetail Contact2 {get; set;}
>
>        [ForeignKey("EnteredByOperator")]
>        public string EnteredBy { get; set; }
>
>        [InverseProperty("ClientsEnteredBy")]
>        public virtual Operator EnteredByOperator { get; set; }
>
>        [ForeignKey("ModifiedByOperator")]
>        public string ModifiedBy { get; set; }
>
>        [InverseProperty("ClientsUpdatedBy")]
>        public virtual Operator ModifiedByOperator { get; set; }
>
>        [DataType(DataType.DateTime)]
>        [DisplayName("Created on")]
>        public DateTime EnteredOn { get; set; }
>
>        [DataType(DataType.DateTime)]
>        [DisplayName("Modified on")]
>        public DateTime? ModifiedOn { get; set; }
>
>        public virtual ICollection<ClientOrder> ClientOrders { get; set; }
>        
>        public virtual ICollection<Reorder> Reorders { get; set; }
>    }
>}
>
>So, I don't really like this mix.
>
>Thanks again.
Craig Berntson
MCSD, Microsoft .Net MVP, Grape City Community Influencer
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform