Sono nuovo di MVC, quindi per favore andate piano con me. Mi è stato consegnato un progetto che è stato avviato in MVC e gli è stato detto di aggiungerlo. Stavo bene finché non sono arrivato a una sezione che aveva bisogno di dati da due modelli diversi. Ora sono bloccato e il mio capo lo vuole fatto ieri. Si prega di aiutare se potete.MVC - Pulsante Invia non funziona con più viste parziali
Ho una vista con due viste parziali e un pulsante di invio. Ciascuna delle viste parziali utilizza un modello diverso. Le visualizzazioni visualizzano le informazioni sullo schermo che l'utente può modificare. Viene quindi fatto clic sul pulsante di invio. Nel controller, vorrei accedere ai dati di entrambi i modelli (i valori che l'utente ha inserito sullo schermo). Al momento, non riesco nemmeno a ottenere il pulsante di invio per chiamare il controller. Questa è la parte di cui ho bisogno di aiuto immediato, ma alla fine dovrò sapere come accedere ai dati di entrambi i modelli dal controller.
Ecco l'idea di base di ciò che voglio fare:
Questa è la mia opinione: CreateContract.cshtml
<div class="container-fluid">
@using (Html.BeginForm("CreateContract", "CreateContract", FormMethod.Post, new { @class = "form-horizontal " }))
{
<div id="PartialDiv">
@{
Html.RenderPartial("ApplicationPartialView", new CarmelFinancialWeb.Models.ModelApplication());
Html.RenderPartial("ContractPartialView");
}
</div>
<input id="btnCreateContract" type="submit" class="btn btn-primary" value="Save" name="CreateContract" />
}
</div>
Questo fa parte dei CreateContractController.cs controller. Questo metodo viene colpito quando la vista si apre e funziona correttamente.
[AuthorizeAdmin]
public ActionResult CreateContract(string ID)
{
ModelContract obj_Contract = new ModelContract();
obj_Contract.BuyerName = "MOCS";
return View(@"~/Views/CreateContract/CreateContract.cshtml", obj_Contract);
}
Questo è parte del controller CreateContractController.cs. Questo metodo non viene colpito quando si fa clic sul pulsante di invio. Ho provato ad includere la variabile ID stringa dall'altro metodo e sia ModelContract che ModelApplication (e varie combinazioni di questi), ma non riesco a ottenere questo metodo per essere chiamato.
[AuthorizeAdmin]
[HttpPost]
public ActionResult CreateContract()
{
ModelApplication obj_App = new ModelApplication();
return View(@"~/Views/CreateContract/CreateContract.cshtml", obj_App);
}
Questi sono i metodi nel controller per le viste parziali. Anche questi non vengono chiamati.
public PartialViewResult ApplicationPartialView(string ID)
{
ModelApplication obj_App = new ModelApplication();
if (ID != null && ID != "0" && ID != null && ID != "")
{
obj_App = objBllApplication.GetApplicationByID(int.Parse(ID));
}
return PartialView("CreateContractApplicationPartialView");
}
public PartialViewResult ContractContractPartialView()
{
ModelContract obj_Contract = new ModelContract();
obj_Contract.DealerID = "MOCS";
return PartialView("CreateContractContractPartialView");
}
Forse la versione Post del CreateContract lavoro prima? Direi che la risposta è no. Forse ha bisogno di prendere un'istanza di ModelContract in modo che possa ottenere dettagli dal modulo. –
La prima cosa che cambierei è il controllo di invio. Lo farei come un pulsante invece di un input. Fai una prova e vedi se inizia a chiamare l'azione del tuo controller. – Pheonyx
Pheonyx: quando l'ho modificato in un pulsante, viene visualizzato questo errore: "L'elemento del modello passato nel dizionario è di tipo 'CarmelFinancialWeb.Models.ModelContract', ma questo dizionario richiede un elemento del modello di tipo 'CarmelFinancialWeb.Models.ModelApplication '." – boilers222