2009-04-08 1 views
20

Sto usando il framework asp.net MVC. Sulla mia pagina ho un dropdwonbox e quando si fa clic su un'opzione, voglio andare su un'altra pagina. Ma non riesco a trovare come/dove impostare la proprietà autopostback su true. Questo è il codice che sto utilizzando:C# Come impostare la proprietà autopostback quando si utilizza asp.net mvc?

aspx:

<%= Html.DropDownList("qchap", new SelectList((IEnumerable)ViewData["qchap"], "Id", "Title")) %> 

Controller:

public ActionResult Index(int id) 
{ 
    Chapter c = new Chapter(); 
    ViewData["qchap"] = c.GetAllChaptersByManual(id); 

    return View(); 
} 

Che cosa devo fare per utilizzare la funzionalità di AutoPostBack?

risposta

36

È possibile utilizzare l'evento client onchange:

<%= Html.DropDownList("qchap", 
     new SelectList((IEnumerable)ViewData["qchap"], "Id", "Title"), 
     new { onchange = "this.form.submit();" }) %> 
+0

thnx. E devo usare lo stesso modo se voglio aggiungere l'attributo di classe? – Martijn

+2

sì, anche se con C# è necessario prefisso con un carattere di sottolineatura .. cioè nuovo {_class = "qualcosa"} – meandmycode

+0

In che modo il controller saprà quale azione deve essere eseguita? –

0

Sembra che il metodo di supporto DropDownList non supporta questa. Forse utilizzarlo in un modulo e un attributo html personalizzato personalizzato per inviare il modulo.

0

Credo anche che si consiglia di regolare il postback al FormsCollection

postback pubblico ActionResult Index (FormsCollection myform)

(io non sono sul mio pc di casa in cui è installato MVC, così ho non posso verificare la sintassi qui)

0

Risolvi utilizzando questo codice.

Function Index(ByVal collectionField As FormCollection) As ActionResult 

     Dim industryCategoryID As Long = collectionField.Item("ddlIndustry") 
     If industryCategoryID = 0 Then 
      Me.ViewData("IndustryList") = GlobalController.GetIndustryList 
      Return View(_service.ListCompanies()) 
     Else 
      Me.ViewData("IndustryList") = GlobalController.GetIndustryList 
      Return View(_service.ListCompanies(industryCategoryID)) 
     End If 

End Function 

Questo è per la funzione ActionResult

e poi per la vista

<p> 
    <% Using Html.BeginForm()%> 
     <%=Html.DropDownList("ddlIndustry", New SelectList(CType(ViewData("IndustryList"), IEnumerable), "ID", "Name"), "--Choose industry--", New With {.onchange = "this.form.submit()"})%> 
    <% End Using %> 

    </p> 

spero che aiuta. Se vuoi che i codici completi siano perfetti, scrivimi a [email protected]