2013-03-20 12 views
16

Capisco che posso usare @Html.HiddenFor(m => m.parameter) e quando il modulo viene inviato, quel parametro verrà passato al controller. Il mio modello ha molte proprietà.Passa un intero modello all'invio del modulo

C'è un modo più breve per passare l'intero modello contemporaneamente al controller o devo farlo uno per uno ogni volta?

risposta

17

Il modello verrà passato al controllore nella sua interezza, ma i valori delle proprietà che non sono vincolati da campi di input o nascosti andranno persi.

È necessario associare le proprietà nel modulo sul lato client o recuperare l'entità sul lato server.

Sembra che tu stia chiedendo qualcosa come @Html.HiddenFor(m => m.Model), e questo non è possibile. Scusa

Una cosa da tenere a mente, se si dispone di un sacco di campi nascosti, è possibile che si stia inviando più dati alla visualizzazione di quanto realmente necessario. Considerare l'utilizzo di modelli di vista

0

L'intero modello verrà pubblicato se si utilizza un elemento FORM. I suoi elementi utilizzando il modello, ovviamente, devono essere all'interno dell'elemento modulo

È inoltre possibile pubblicare il modulo da soli dicono utilizzando JQuery

Vai a questa altra questione stack per che: jQuery AJAX submit form

Avere uno sguardo da vicino . l'anwser da "Alfrekjv"

1

questo è già costruito in Considerate questo modello:

public class MyModel 
{ 
    public string PropertyA { get; set; } 
    public string parameter { get; set; } 
} 

e ora co nsider questa azione:

[HttpPost] 
public ActionResult PostSomeData(MyModel model) 
{ 
} 

MVC farà leva la FormCollection e compilare la classe MyModel dove può. Se non si dispone dello PropertyA nel modulo, sarà null. Ma dal momento che hai parameter proprietà, sarà riempito.

1

Per chi guarda questo, puoi fare un @ Html.EditorForModel() in un div nascosto. Dovresti anche usare @ Html.EditorFor (model => model.ObjectProperty) per ogni proprietà dell'oggetto del modello.

<div hidden="hidden"> 
    @Html.EditorForModel() 
    @Html.EditorFor(model => model.ObjectProperty) 
    @Html.EditorFor(model => model.ListOfObjectsProperty) 
</div> 
0

È possibile controllare solo le proprietà desiderate:

if (this.ModelState.IsValidField("Name")) 
{ 
    // ..... 
} 

invece di:

if (this.ModelState.IsValid) 
{ 
    // ..... 
} 
Problemi correlati