asp.net mvc 5 отправляет два параметра контроллеру из ajax scrypt

#asp.net #ajax #datetime #parameters #asp.net-mvc-5

#asp.net #ajax #дата и время #параметры #asp.net-mvc-5

Вопрос:

На мой взгляд, у меня есть:

     @Html.EditorFor(model => model.From, new { htmlAttributes = new {id = "fromEdit", @class = "form -control", @style = "width:300px" } })

    @Html.EditorFor(model => model.To, new {htmlAttributes = new { id = "toEdit", @class = "form-control", @style = "width:300px"}})
  

и мне нужен вызов при действии контроллера с двумя параметрами даты и времени из scrypt:

     <script>
        var dataToSend = {
            startDate: $("#fromEdit").getDate,
            endDate: $("#toEdit").getDate
        }

        $(document).ready(function() {
            $('#example').DataTable({
                "ajax": {
                    "url": RootUrl   "SalesDetailsReport/GetSalesDetailReport",
                    "type": "GET",
                    "data": dataToSend ,
                    "dataType": "json"
                },
                "aoColumns": [
                    { "data": "Date", "autoWidht": true },
                    { "data": "Client", "autoWidht": true },
                    { "data": "Product", "autoWidht": true },
                    { "data": "Costs", "autoWidht": true },
                    { "data": "Profit", "autoWidht": true },
                    { "data": "ProfitMarginPercentage", "autoWidht": true },
                    { "data": "Amount", "autoWidht": true },



                ]
            });
        });
    </script>
  

в моем контроллере:

 public ActionResult GetSalesDetailReport(DateTime pFrom , DateTime pTo)
  

что-то не так (или вообще что-либо), потому что в свойствах моего браузера я вижу :

Получает подробный отчет?_=1477245791871 500 (внутренняя ошибка сервера)

и действие контроллера никогда не вызывается.#

Спасибо за ваше время, ребята!

Комментарии:

1. хорошо, с этим изменением в свойствах моего браузера я вижу: localhost: 59798/SalesDetailsReport/… Не удалось загрузить ресурс: сервер ответил со статусом 500 (внутренняя ошибка сервера). Похоже, я считываю дату и время в неправильном формате. Спасибо

2. И сообщение браузера таково: Словарь параметров содержит нулевую запись для параметра ‘pFrom’ ненулевого типа ‘System. DateTime ‘для метода ‘System.Web.Mvc.ActionResult получает отчет о продажах (System. Дата, время, система. DateTime)’ в ‘ERPPrismaMVC5.Controllers. SalesDetailsReportController’. Необязательный параметр должен иметь ссылочный тип, тип с возможностью обнуления или быть объявлен как необязательный параметр. Имя параметра: параметры

Ответ №1:

Параметрами вашего метода действия являются pFrom и pTo . Поэтому убедитесь, что отправляемый вами объект js имеет то же имя свойства.

 var dataToSend = {
                  pFrom: $("#fromEdit").val(),
                  pTo:  $("#toEdit").val()
                }
  

Комментарии:

1. После этого изменения я отправляю это в URL:

2. После этого изменения я отправляю это по URL: pFrom=23/10/2016 20:23:01amp; и поскольку контроллер не получает параметр rights и не вызывает действие. Спасибо

3. откуда вы знаете, что контроллер не получает параметр? Вы установили точку останова и проверили значения?

4. Да, я это сделал, я поставил точку останова в начале, и, кроме того, браузер сообщает мне: словарь параметров содержит нулевую запись для параметра ‘pFrom’. Я думаю, что take null baceau может решить тип. Есть идея?

5. Возможно, ваши входные данные не имели значения при выполнении вызова. Попробуйте заменить значения для pFrom и pTo на некоторые жестко закодированные строки даты (например: 10/10/2001 ) и посмотрите, что получится.