2017-06-23 2 views
0

Im Moment haben meine POST-Aktionen für Create und Edit ziemlich lange Funktionsdefinitionen, weil es viele Variablen gibt und mein Bind-Attribut alle enthält.Alternativen zum Binding-Modell für Controller-Aktion

public ActionResult Create([Bind(Include = "ProjectName,ProjectDescription,DateReceived,EffectiveDate,ExpirationDate,GeneralContractor,ProjectTerm,ProjectType,SubmissionNumber,PolicyNumber,Status,Underwriter,Division,BrokerCity,TAName,Branch,FirstNamedInsuredAddress,FirstNamedInsured,ProjectAddress")] Project project) { 

und

public ActionResult Edit([Bind(Include = "ProjectID,ProjectName,ProjectDescription,DateReceived,EffectiveDate,ExpirationDate,GeneralContractor,ProjectTerm,ProjectType,SubmissionNumber,PolicyNumber,Status,Underwriter,Division,BrokerCity,TAName,Branch,FirstNamedInsuredAddress,FirstNamedInsured,ProjectAddress")] Project project) { 

Gibt es eine Alternative dazu, dass die Definitionen kürzer machen würde?

Hier ist mein Modell:

public class Project 
{ 
    public Project() 
    { 
     FirstNamedInsuredAddress = new Address(); 
     ProjectAddress = new Address(); 
    } 

    [Key] 
    public int ProjectID { get; set; } 

    [Required] 
    [StringLength(150)] 
    [Display(Name = "Project Name")] 
    public string ProjectName { get; set; } 

    [StringLength(1000)] 
    [Display(Name = "Project Description")] 
    public string ProjectDescription { get; set; } 

    [Display(Name = "Date Received")] 
    public string DateReceived { get; set; } 

    [Display(Name = "Effective Date")] 
    public string EffectiveDate { get; set; } 

    [Display(Name = "Expiration Date")] 
    public string ExpirationDate { get; set; } 

    [StringLength(150)] 
    [Display(Name = "General Contractor")] 
    public string GeneralContractor { get; set; } 

    [StringLength(25)] 
    [Display(Name = "Project Term")] 
    public string ProjectTerm { get; set; } 

    [Display(Name = "Project Type")] 
    public string ProjectType { get; set; } 

    [Required] 
    [Display(Name = "Submission Number")] 
    public long SubmissionNumber { get; set; } 

    [StringLength(20)] 
    [Display(Name = "Policy Number")] 
    public string PolicyNumber { get; set; } 

    public string Status { get; set; } 

    [StringLength(100)] 
    public string Underwriter { get; set; } 

    public string Division { get; set; } 

    [StringLength(50)] 
    [Display(Name = "Broker/City")] 
    public string BrokerCity { get; set; } 

    [StringLength(100)] 
    [Display(Name="TA Name")] 
    public string TAName { get; set; } 

    public string Branch { get; set; } 

    [Display(Name="First Named Insured Address")] 
    public Address FirstNamedInsuredAddress { get; set; } 

    [StringLength(150)] 
    [Display(Name="First Named Insured")] 
    public string FirstNamedInsured { get; set; } 

    [Display(Name="Project Address")] 
    public Address ProjectAddress { get; set; } 

    public class Address 
    { 
     [StringLength(150)] 
     [Display(Name="Line 1")] 
     public string Line1 { get; set; } 

     [StringLength(150)] 
     [Display(Name="Line 2")] 
     public string Line2 { get; set; } 

     [StringLength(100)] 
     public string City { get; set; } 

     public string State { get; set; } 

     [Display(Name="Zip Code")] 
     public int? ZipCode { get; set; } 

     [StringLength(100)] 
     public string County { get; set; } 

    } 
} 
+2

Uh, entweder ich bin betrunken oder Sie tun können, nur 'public Action Edit (Projekt Projekt)' und lassen Sie es alles standardmäßig binden. – PTwr

+0

@PTwr genau, ist das nicht der ganze Sinn der Verwendung von Modellen? – jamiedanq

+0

@jamiedanq Ich denke, was wir hier haben, ist ein Fall von 'DbModel', verwendet als' ViewModel' mit 'Bind' als Umgehung für das Fehlen von' ViewModel', meinen betrunkenen Augenflecken '[Key]' auf ID. Ich werde schreiben Antwort auf jemanden nüchtern verlassen :) – PTwr

Antwort

0

Als Alternative zu der gehören, können Sie das Ausschließen verwenden. Es werden nur die Eigenschaften ausgeschlossen, die Sie nicht veröffentlichen möchten. Wahrscheinlich wird es in den meisten Fällen weniger sein oder wenn Sie möchten, können Sie sowohl das Einschließen als auch das Ausschließen entfernen, und alle Daten werden veröffentlicht.

Ex:

[HttpPost] 
[ActionName("Edit")] 
public ActionResult Edit([Bind(Exclude = "GeneralContractor")] Project project) 
{ 

} 

Mehr/Nützliche Informationen: http://csharp-video-tutorials.blogspot.in/2013/05/part-21-including-and-excluding.html