Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
DropDownListFor binding
Message
 
 
À
15/01/2013 12:02:52
Information générale
Forum:
ASP.NET
Catégorie:
MVC
Versions des environnements
Environment:
C# 5.0
Divers
Thread ID:
01562476
Message ID:
01562676
Vues:
28
>>I guess for now I'll go ahead, grab Id's from ViewSource and use them in my code and bind manually.
>
>Thinking about it - doesn't the name of each control get set by default to reflect the relevant property in the viewmodel. If that's the case the maybe writing jscript to populate from the return values would be simple enough ?

Can you clarify?

Also, my Client class has few Complex Types, so the Id sometimes is not the name of the property, e.g. my Client class:
using System;

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")]      
        [Column("client_no", TypeName = "smallint")]
        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")]

        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; }
    }
}
And this is what I see when I view source of that form:
<div id="editor" style="visibility:hidden">
     <form action="/Client/Client" id="sform" method="post" title="Client Info">    <fieldset>
        <legend>Client Info</legend>

        
       
        <input data-val="true" data-val-number="The field ClientId must be a number." id="ClientId" name="ClientId" type="hidden" value="" />
        <div class="editor-label">
    <label for="Number">Client No</label>
</div>

<div class="editor-field">
<input class="numericOnly" data-val="true" data-val-number="The field Client No must be a number." data-val-remote="Client Number already exists. Please enter a different Client Number." data-val-remote-additionalfields="*.Number,*.ClientId" data-val-remote-type="POST" data-val-remote-url="/Client/doesClientNoExist" data-val-required="The Client No field is required." id="Number" name="Number" type="number" value="" />   
     <span class="field-validation-valid" data-valmsg-for="Number" data-valmsg-replace="true"></span>
</div>


        <div class="editor-label">
    <label for="Name">Client Name</label>
</div>

<div class="editor-field">
<input class="text-box single-line" data-bind="value: Name" data-val="true" data-val-remote="Client Name already exists. Please enter a different Client Name." data-val-remote-additionalfields="*.Name,*.ClientId" data-val-remote-type="POST" data-val-remote-url="/Client/doesClientNameExist" data-val-required="The Client Name field is required." id="Name" name="Name" type="text" value="" />   
     <span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>
</div>


        <div class="editor-label">
    <label for="Address">Address</label>
</div>

<div class="editor-field">
    <textarea class="text-box multi-line" cols="60" data-bind="value: Address" id="Address" name="Client.Address" rows="5" wrap="virtual">
</textarea>
    <span class="field-validation-valid" data-valmsg-for="Address" data-valmsg-replace="true"></span>
</div>


        <div id="ContactsInfo">

            <div id="Contact1">

                <div class="editor-label">
    <label for="Client_Contact1_Contact">Contact Name</label>
</div>
<div class="editor-field">
    <input class="text-box single-line" data-val="true" data-val-length="The field Contact Name must be a string with a maximum length of 100." data-val-length-max="100" id="Client_Contact1_Contact" name="Client.Contact1.Contact" type="text" value="" />
    <span class="field-validation-valid" data-valmsg-for="Client.Contact1.Contact" data-valmsg-replace="true"></span>
</div>

<div class="editor-label">
    <label for="Client_Contact1_Email">Email</label>
</div>
<div class="editor-field">
    <input class="text-box single-line" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-length="The field Email must be a string with a maximum length of 100." data-val-length-max="100" id="Client_Contact1_Email" name="Client.Contact1.Email" type="email" value="" />
    <span class="field-validation-valid" data-valmsg-for="Client.Contact1.Email" data-valmsg-replace="true"></span>
</div>

<div id="PhoneInfo">
    <div class="float-left">
        
        <div class="editor-label">
            <label for="Client_Contact1_phoneInfo_Phone">Phone</label>
        </div>
        <div class="editor-field">
            <input class="text-box single-line" data-val="true" data-val-regex="Please enter valid Phone Number" data-val-regex-pattern="^((\(\d{3}\)|\d{3})\s?)?\d{3}[-\s]?\d{4}\s*$" id="Client_Contact1_phoneInfo_Phone" name="Client.Contact1.phoneInfo.Phone" type="tel" value="" />
            <span class="field-validation-valid" data-valmsg-for="Client.Contact1.phoneInfo.Phone" data-valmsg-replace="true"></span>
        </div>
    </div>
    <div class="float-right">
        
        <div class="editor-label">
            <label for="Client_Contact1_phoneInfo_Ext">Ext</label>
        </div>
        <div class="editor-field">
            <input class="text-box single-line" data-val="true" data-val-length="The field Ext must be a string with a maximum length of 5." data-val-length-max="5" id="Client_Contact1_phoneInfo_Ext" name="Client.Contact1.phoneInfo.Ext" type="text" value="" />
            <span class="field-validation-valid" data-valmsg-for="Client.Contact1.phoneInfo.Ext" data-valmsg-replace="true"></span>
        </div>
    </div>
</div>


            </div>

            <div id="Contact2">

                <div class="editor-label">
    <label for="Client_Contact2_Contact">Contact Name</label>
</div>
<div class="editor-field">
    <input class="text-box single-line" data-val="true" data-val-length="The field Contact Name must be a string with a maximum length of 100." data-val-length-max="100" id="Client_Contact2_Contact" name="Client.Contact2.Contact" type="text" value="" />
    <span class="field-validation-valid" data-valmsg-for="Client.Contact2.Contact" data-valmsg-replace="true"></span>
</div>

<div class="editor-label">
    <label for="Client_Contact2_Email">Email</label>
</div>
<div class="editor-field">
    <input class="text-box single-line" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-length="The field Email must be a string with a maximum length of 100." data-val-length-max="100" id="Client_Contact2_Email" name="Client.Contact2.Email" type="email" value="" />
    <span class="field-validation-valid" data-valmsg-for="Client.Contact2.Email" data-valmsg-replace="true"></span>
</div>

<div id="PhoneInfo">
    <div class="float-left">
        
        <div class="editor-label">
            <label for="Client_Contact2_phoneInfo_Phone">Phone</label>
        </div>
        <div class="editor-field">
            <input class="text-box single-line" data-val="true" data-val-regex="Please enter valid Phone Number" data-val-regex-pattern="^((\(\d{3}\)|\d{3})\s?)?\d{3}[-\s]?\d{4}\s*$" id="Client_Contact2_phoneInfo_Phone" name="Client.Contact2.phoneInfo.Phone" type="tel" value="" />
            <span class="field-validation-valid" data-valmsg-for="Client.Contact2.phoneInfo.Phone" data-valmsg-replace="true"></span>
        </div>
    </div>
    <div class="float-right">
        
        <div class="editor-label">
            <label for="Client_Contact2_phoneInfo_Ext">Ext</label>
        </div>
        <div class="editor-field">
            <input class="text-box single-line" data-val="true" data-val-length="The field Ext must be a string with a maximum length of 5." data-val-length-max="5" id="Client_Contact2_phoneInfo_Ext" name="Client.Contact2.phoneInfo.Ext" type="text" value="" />
            <span class="field-validation-valid" data-valmsg-for="Client.Contact2.phoneInfo.Ext" data-valmsg-replace="true"></span>
        </div>
    </div>
</div>

            </div>
        </div>

        <div id="SaveCancel" class="float-right">
            <button id="btnSave">Save</button>
            <button type="reset" id ="btnCancel" name="Reset">Cancel</button>
        </div>
    </fieldset>
</form>;
</div>
In Opera browser (actually, I only show relevant portion of view source, the view shows everything including menu, grid, and footer).
If it's not broken, fix it until it is.


My Blog
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform