Temat: MVC & external JS

Może ktoś mi podpowie jak wywołać JS jako zewnętrzny plik, a dokładniej chodzi o AJAX-a.
Na stronie mam kaskadową listę select-ów np. po wybraniu województwa, "podpina" mi się lista powiatów, po wybraniu powiatu podpina się ... itd.
Obecnie na poziomie widoku wyświetlam powiat jak poniżej (ale JS chcę wydzielić do osobnego pliku):


<script type="text/javascript">
$(document).ready(function () {
...
$.ajax({
type: 'POST',
url: '@Url.Action("SelectPow")',
dataType: 'json',
data: { symbolWoj: $("#woj").val() },
success: getPow,
error: getErr
});

function getPow(powiaty) {
alert('ajax :) ');
$.each(powiaty, function (index, itemPowiat) {
$("#pow").append($('<option/>', {
value: itemPowiat.Value,
text: itemPowiat.Text
}));
});
}
...
</script>


@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
Powiat: <td>@Html.DropDownList("PowLista", null, String.Empty) </td>
</fieldset>
}


a chcę by w widoku tylko odwoływać się do JS:

<script src="@Url.Content("~/Scripts/geLists.js")" type="text/javascript"></script>


Po stronie kontrolera pobieram powiaty:


public JsonResult SelectPow(string symbolWoj)
{
return Json(Adres.getPowiat(symbolWoj), JsonRequestBehavior.AllowGet);
}

Temat: MVC & external JS

Jeżeli ten kod w 1 pliku Ci działa to jedynym problemem jest to, że w oddzielnym pliku js nie wykona się kod c# czyli "@Url.Action("SelectPow")".
Masz 2 wyjścia:
1. zamiast @Url.Action("SelectPow") wstawiasz ręcznie to co tam powinno być.
2. Na stronie w js wstawiasz var urlAction = '@Url.Action("SelectPow") ';
a później w pliku js używasz urlAction zamiast @Url.Action("SelectPow")Ten post został edytowany przez Autora dnia 25.02.16 o godzinie 22:14

Temat: MVC & external JS

Dziękuję za odpowiedź.
Kod, który wcześniej załączyłam działa prawidłowo na poziomie widoku.
Wcześniej próbowałam już rozwiązania nr 2., ale mi nie działa

Metoda kontrolera, którą chcę wywołać (czy zwracany typ ma tu znaczenie? - próbowałam też z ActionResult ):

public JsonResult SelectPow(string symbolWoj)
{
return Json(Adres.pobierzPowiat(symbolWoj), JsonRequestBehavior.AllowGet);
}


W widoku:

<script src="@Url.Content("~/Scripts/selectList.js")" type="text/javascript">
var urlAction = '@Url.Action("SelectPow")';
</script>


Próbowałam też z parametrem:

<script src="@Url.Content("~/Scripts/selectList.js")" type="text/javascript">
var urlAction = '@Url.Action("SelectPow")?symbolWoj=06';
</script>


Wycinek pliku selectList.js

$.ajax({
type: 'POST',
url: urlAction,
dataType: 'json',
data: { symbolWoj: $("#wojToUpdate").val() },
success: getPow,
error: getErr
});
Ten post został edytowany przez Autora dnia 29.02.16 o godzinie 16:57

Następna dyskusja:

ASP.NET MVC




Wyślij zaproszenie do