/ / Wywołanie Ajax do kontrolera - asp.net-mvc

Wywołanie Ajax do kontrolera - asp.net-mvc

Przesyłam niektóre dane (pola wyboru, ciągi) zmój widok do kontrolera za pomocą HttpPost. Wraz z tymi danymi muszę również przekazać wartość 2 list rozwijanych wybranych przez użytkownika, te 2 nie są związane z modelem, są po prostu w widoku. Jak to zrobić?

W widoku ->

Miesiąc ładowania: Jan Lut Zniszczyć kwiecień Może czerwiec lipiec Aug Sept Paź Nov Dec
    <div id="loadyear">
Load Year :
<select name="years" class="YearDropDown">
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
</select>
</div>

Mam to razem z innymi przedmiotami, które są związanedo modelu. Kiedy używam metod begin-up i HttpPost, jestem w stanie pobrać je ze sterownika, ale jak przekazać listy rozwijane loadmonth i loaryear tak, że mogę zobaczyć ich wartość w kontrolerze?

Odpowiedzi:

0 dla odpowiedzi № 1

Spróbuj na przykład tej zmiany. Wierzę, że to zadziała.

możesz ustawić silnie wpisane ukryte pole dlaspadek w dół. W przypadku zdarzenia drop down change jego wartość jest ukryta. Reszta modelu i kontroler będzie obsługiwać. Potrzebujesz trochę javascript / jQuery. Zawsze wolę jQuery.

Uwaga: twoje ukryte pole musi być silnie powiązane z właściwością w modelu, którego używasz w widoku.

Model

public class MyModel
{
// your other stuff

public string DropDownValue { get; set; }
}

Widok

<div id="loadyear">
Load Year :
<select name="years" class="YearDropDown">
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
</select>
@Html.HiddenFor(x => x.DropDownValue)
</div>

Scenariusz

$(function(){
$("#loadyear select").change(function(){
$("#DropDownValue").val($(this).val());
});
});

Kontroler

[HttpPost]
public ActionResult ViewName(MyModel model)
{
return View(model);
}

Kiedy twój HttpPost akcja dla tego widoku trafienia możesz faktycznie zobaczyć wartość właściwości w debugerze.

Można to również zrobić za pomocą ajax, ale to uratuje dodatkowe połączenie z twoim kodem i wpisanie kodu dla tego samego. Jeśli naprawdę chcesz to zrobić z ajaxem, prosimy o komentarz. Mam nadzieję, że to pomoże :)


0 dla odpowiedzi nr 2

Dopóki pola są w formularzu, możesz uzyskać do nich dostęp za pomocą żądania. Nie będą one powiązane z żadnym modelem za pośrednictwem MVC, ale wartości będą obecne przy podejmowaniu. Użyj Controller.Request Właściwość, aby uzyskać do nich dostęp.