Ho una pagina "edit" di asp.net mvc che consente all'utente di apportare modifiche all'entità padre e quindi anche di "creare" entità figlio sulla stessa pagina. Nota: sto facendo questi oggetti per il trasferimento dei dati.
public class CustomerViewModel
{
public int Id { get; set; }
public Byte[] Timestamp { get; set; }
public string CustomerName { get; set; }
public etc..
public CustomerOrderCreateViewModel CustomerOrderCreateViewModel { get; set; }
}
Secondo me ho due moduli html. Uno per i post Http di "modifica" dei clienti e l'altro per i post Http di "Creazione" di CustomerOrder. Nella pagina di visualizzazione, carico il modulo "create" CustomerOrder utilizzando:
<div id="CustomerOrderCreate">
@Html.Partial("Vendor/_CustomerOrderCreatePartial", Model.CustomerOrderCreateViewModel)
</div>
I moduli di azione in formato html di CustomerOrder su un altro controller HttpPost ActionResult rispetto al risultato di azione "modifica" del cliente.
La mia preoccupazione è questa, sul controller CustomerOrder, in HttpPost ActionResult
[HttpPost]
public ActionResult Create(CustomerOrderCreateViewModel vm)
{
if (!ModelState.IsValid)
{
return [What Do I Return Here]
}
...[Persist to database code]...
}
Non so cosa restituire se lo stato del modello non è valido. Al momento non è un problema, perché la convalida discreta di jQuery gestisce la convalida sul client. Ma cosa succede se ho bisogno di una convalida più complessa (ad esempio: il server deve gestire la convalida).