2012-04-07 8 views
3

Ich bin interessant, um eine Aktion in der Änderung von DropDown auszuführen. Jetzt möchte ich keine Ajax oder Javascripts verwenden, ich brauche Postback. Das ist meine Ansicht bearbeiten Code:Ausführen einer Aktion bei der Änderung von DropDownListFor mit Pass-Parameter in ASP.NET MVC3 mit Razor View Engine

@Html.DropDownListFor(model => Model.Title, MySelectList) 

Und mein html dom:

<select name="Title" id="Title"> 
    <option value="7" selected="selected">AV</option> 
    <option value="9">HS</option> 
    <option value="8">IT</option> 
</select> 

so muss ich Wechsel Drop-Down-Sicht MajorCategoryChange Aktion mit den Parametern der PPId = Model.Id und CategoryId = selectedoption.Value Aufmerksamkeit, die DropDown ist in Edit View Aktion und in ändern Ich brauche eine andere Aktion führen Sie es aus.

Das zurückgegebene URL ist wie folgt:

"http://MyProject/Products/ProductPoint/MajorCategoryChange?PPId=1&CategoryId=123" 

Was ist Ihr Vorschlag ist?

Antwort

2

Sie müssen etwas JavaScript-Code in das onchange -Attribut eingeben, nicht nur eine URL. Wenn Sie den Benutzer auf eine andere Seite umleiten möchten, können Sie location.href verwenden.

@Html.DropDownListFor(model => Model.Title, MySelectList, new { @onchange = "location.href = http://MyProject/Products/ProductPoint/MajorCategoryChange?PPId=1&CategoryId=123;" }) 
+0

ich den genauen Code von Ihnen verwenden, sagte, nichts ändern noch Stahl das gleiche Problem – Saeid

0

Ihre Frage ist ein wenig verwirrend, wie Sie sagen, Sie wollen onchange verwenden, sondern auch, dass Sie nicht wollen, Javascript verwenden. onchange funktioniert nur mit Javascript. Wenn Sie kein JavaScript verwenden möchten, müssen Sie die Auswahl in ein Formular einschließen und eine Schaltfläche zum Senden haben, um Ihr Postback zu erhalten.

z.B.

@using (Html.BeginForm("MajorCategoryChange", "YourController", FormMethod.Post)) 
{ 
    <input type="hidden" name="PPId" value="@Model.Id" /> 
    @Html.DropDownListFor(model => Model.Title, MySelectList) 
    <input type="submit" value="Go" /> 
} 

Wie haben Sie es den Wert, die Sie möchten für Ihre CategoryId in durch Modell mit dem Namen Bindung kommen Title, so können Sie den Parameternamen auf dem Modell von Title zu CategoryId ändern möchten. Oder ändern Sie Ihre Parameternamen in Ihrer Aktionsmethode, z.

[HttpPost] 
public ActionResult MajorCategoryChange(int PPId, int Title) 
{ 
    // ... 
} 
+0

Vielen Dank für Antwort eigentlich brauche ich eine Implementierung einer Aktion in DropDown geändert laufen, nicht mit anderen Taste (wie Sie Submit-Button sagte) – Saeid

+0

Dann versuchen Sie, @ Html.DropDownListFor (Modell => Model.Title, MySelectList, neu {@onchange = "this.form.submit()"}) hinzuzufügen. – ngm

+0

Angenommen, dropdownfor ist in Bearbeiten-Ansicht und ich muss MajorCategoryChange Aktion in Änderung davon ausführen, wenn ich Ihren Vorschlagscode nur Aktion Aktion erneut ausführen oder Aktion von httppost verwenden – Saeid

Verwandte Themen