Estoy tratando de pasar parámetros a un controlador ASP.Net MVC desde una llamada URL.Action en JavaScript. He visto a otros publicar cosas similares a esta, pero no la circunstancia exacta que tengo, aunque he intentado implementar cuáles eran esas soluciones, no se tradujeron.
Tengo un botón en un formulario modal que quiero llamar un método en el controlador cuando se hace clic en él y se cierra el formulario modal.
Aquí está el HTML para el botón:
<div class="modal-footer"> <button type="button" class="btn btn-default closing-modal" data-dismiss="modal">Done</button> </div>
aquí está el JavaScript
$(document).on('click', '.closing-modal', function () { var datePickers = document.getElementsByClassName("datepicker"); var times = document.getElementsByClassName("timeField"); var myStartDate = datePickers[0].value; var myEndDate = datePickers[1].value; var myStartTime = times[0].value; var myEndTime = times[1].value; window.location.href = '@Url.Action("ContractSelectedIndex", "ReviewTicket")'; });
y aquí está el método de recepción en el controlador:
public ActionResult ContractSelectedIndex(string startDate, string startTime, string endDate, string endTime)
He intentado varias formas de agregar un nuevo {}, pero debido a la @ no puedo encontrar la sintaxis correcta. Esto es lo que he probado que tiene más sentido para mí (solo el primer parámetro por el bien del ejemplo), pero no me gusta.
window.location.href = '@Url.Action("ContractSelectedIndex", "ReviewTicket", new { startDate: ' + myStartDate + ')' ;
puedes usar esto si prefieres el estilo clásico de mvc
var url='@Url.Action("ContractSelectedIndex", "ReviewTicket")' + '/' + startDate + '/' + startTime + '/' + endDate + '/' +endTime; window.location.href = url;
en este caso su acción debe ser
[Route("~/ReviewTicket/ContractSelectedIndex/{startDate}/{startTime}/{endDate}/{endTime}")] public ActionResult ContractSelectedIndex(string startDate, string startTime, string endDate, string endTime)
o esto
var url='@Url.Action("ContractSelectedIndex", "ReviewTicket")' + '?startDate=' + startDate + '&startTime=' + startTime + '&endDate=' + endDate + '&endTime=' + endTime; window.location.href = url;
en este caso puedes usar la acción que tienes ahora