Home > database >  Embedding form values in an ASP.Net MVC JavaScript URL.Action Call
Embedding form values in an ASP.Net MVC JavaScript URL.Action Call

Time:12-18

I am trying to pass parameters to an ASP.Net MVC controller from a URL.Action call in JavaScript. I have seen others post things similar to this, but not the exact circumstance I have although I have tried to implement what those solutions were, they did not translate.

I have a button on a modal form that I want to call a method in the controller when it is clicked and the modal form is closed.

Here's the HTML for the button:

    <div >
        <button type="button"  data-dismiss="modal">Done</button>
    </div>

here's the 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")';

});

and here's the receiving method in the controller:

    public ActionResult ContractSelectedIndex(string startDate, string startTime, string endDate, string endTime)

I have tried various ways to add a new {}, but because of the @ I can't find the right syntax. This is what I have tried that makes the most sense to me (only first parameter for the sake of the example), but it does not like it.

    window.location.href = '@Url.Action("ContractSelectedIndex", "ReviewTicket", new { startDate: '   myStartDate   ')' ;

CodePudding user response:

you can use this if you prefer classic mvc style

var url='@Url.Action("ContractSelectedIndex", "ReviewTicket")'
  '/'   startDate   '/'   startTime   '/'   endDate   '/'  endTime;

window.location.href = url;

in this case your action should be

[Route("~/ReviewTicket/ContractSelectedIndex/{startDate}/{startTime}/{endDate}/{endTime}")]
public ActionResult ContractSelectedIndex(string startDate, string startTime, string endDate, string endTime)

or this

var url='@Url.Action("ContractSelectedIndex", "ReviewTicket")'
  '?startDate='   startDate   '&startTime='   startTime   '&endDate='   endDate   '&endTime='   endTime;

window.location.href = url;

in this case you can use the action you have now

  • Related