Si esatto perchè il mio desiderio era che l'utente all'atto della creazione di un ticket producesse sia l'intestazione del ticket che la prima reply.
Ho risolto in questo modo anche se non so se può andare bene.
Volevo inzialmente mettere un oggetto reply nella view bag ma non sapevo come accedere al campo Text percui l'ho creato a manocodice:public ActionResult Create() { //Qui valorizzo la ViewBag per essere disponibili nella View List<Project> listProject = db.Projects.ToList(); listProject.Insert(0, new Project { Id = 0, Name = "" }); ViewBag.listProject = new SelectList(listProject, "Id", "Name"); //ViewBag.Reply = new Reply(); return View(); }
View :
Infine nel mio controller con httppostcodice:<div class="form-group"> @Html.Label("Testo", htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.Editor("Text", new { htmlAttributes = new { @class = "form-control" } }) </div> </div>
Non so che dire.codice:[HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "Id,Project_Id,Object")] Ticket ticket, [Bind(Include = "Text")] Reply reply) {
Ho sentito pareri che mi dicevano di creare un model specifico tipo
Ed un controller adeguatocodice:public class TicketCreationViewModel { [Required] [DisplayName("Oggetto")] public string Subject { get; set; } //L'"oggetto" in inglese si dice "Subject" [Required] [DisplayName("Testo")] public string Text { get; set; } }
Però sono riuscito a modificando il controller creato tramite lo scaffolding a far tornare tutto.codice:[HttpPost] [ValidateAntiForgeryToken] public ActionResult Create(TicketCreationViewModel model) { //Validazione, per prima cosa if (!ModelState.IsValid) { return View(model); } //Creo un nuovo ticket e ci copio i dati del model var ticket = new Ticket { Subject = model.Subject }; //Aggiungo la prima reply al ticket var reply = new Reply { Text = model.Text }; ticket.Replies = new List<Reply> { reply }; //TODO: qui salvi il nuovo ticket e reindirizzi l'utente }
Unica cosa che nella view mi piacerebbe passare oggetto reply e crearle il campo text come ho creato object ma non so quale delle strade è meglio se quella che ho fatto, quella suggerita o altre.
Di fatto su queste cose non c'è molta documentazione, consigli, esempi in giro.

Rispondi quotando