2009-04-08 9 views
20

Ich benutze asp.net MVC-Framework. Auf meiner Seite habe ich eine Dropdwonbox und wenn eine Option angeklickt wird, möchte ich auf eine andere Seite gehen. Aber ich kann nicht finden, wie/wo die Autopostback-Eigenschaft auf True festgelegt wird. Dies ist der Code ich verwende:C# Wie legt man die Autopostback-Eigenschaft bei der Verwendung von asp.net mvc fest?

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(); 
} 

Was muss ich tun, um die Autopostback-Funktionalität zu benutzen?

Antwort

36

können Sie die Onchange Client-Ereignis verwenden:

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

thnx. Und muss ich die gleiche Weise verwenden, wenn ich das Klassenattribut hinzufügen möchte? – Martijn

+2

ja, obwohl mit C# müssen Sie einen Unterstrich vorangestellt .. ie new {_class = "etwas"} – meandmycode

+0

Wie der Controller wissen, welche Aktion ausgeführt werden muss? –

0

Es scheint, die Dropdownlist-Helfer-Methode nicht unterstützt. Vielleicht verwenden Sie es in einem Formular und einem benutzerdefinierten HTML-Attribut, um das Formular zu senden.

0

Ich glaube auch, dass Sie Ihre Postbacks an die formsCollection einzustellen möchten

Postbacks public Action Index (FormsCollection myform)

(Ich bin nicht auf meinem Heim-PC, auf dem MVC installiert ist, so dass ich kann die Syntax hier nicht überprüfen)

0

Ich löse mit diesem Code.

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 

, die für die Action Funktion ist

und dann für die Ansicht

<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> 

Ich hoffe, es hilft. Wenn Sie mehr vollständige Codes möchten, fühlen Sie sich bitte gut, um mich unter [email protected]

Verwandte Themen