Отправка AJAX формы .Net MVC

218
14 октября 2018, 06:50

Всем добрый день. Пытаюсь отправить AJAX форму на сервер, но метод контроллера, которым должна обрабатываться форма, не вызывается. Ошибка отклика сервера 500. Вот код формы:

  @Scripts.Render("~/Scripts/jquery-3.3.1.min.js")
            @Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")
            @Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.js")
            @using (Ajax.BeginForm("PhotoSessionInfo", new AjaxOptions { UpdateTargetId = "generalPhotoPos", LoadingElementId = "loading-spin" }))
            {
                <span>Название фотосесии (будет отображаться в галереи): </span>
                <br />
                @Html.TextBox("sessionName", null, new { @class = "sessionName" })
                <br />
                <br />
                <span>Выберите изображение, которое будет являться заставкой фотосесии:  </span>
                <br />
                <input type="file" name="generalPhoto" accept=".jpg, .jpeg, .png">
                <br />
                <br />
                <span>Выберите изображения: </span>
                <br />
                <input type="file" name="photos" accept=".jpg, .jpeg, .png">
                <button type="submit"> Отправить </button>

            }
            <div id="generalPhotoPos">
                <img src="~/Content/loading-spin.svg" id="loading-spin" />
            </div>

Вот код метода PhotoSessionInfo:

  [HttpPost]
    public ActionResult PhotoSessionInfo(HttpPostedFile generalPhoto, string sessionName, HttpPostedFile[] photos)
    {
        long generalPhotoSize = new  System.IO.FileInfo(generalPhoto.ToString()).Length;
        string[] photoNames = new string[photos.Length];

        for (int photo = 0; photo<= photos.Length; photo++ )
        {
            //Если данные больше 2мб, то возвражается представление с сообщением об ошибке
            long size = new System.IO.FileInfo(photo.ToString()).Length;
            if (size > 2000000 && photos.Length ==0)
            {
                return PartialView("Error");
            }
             photoNames[photo] =  System.IO.Path.GetFileName(photos[photo].FileName);
        }
        string [] photoURLs = new string[photos.Length];
        for(int i =0; i<=photoNames.Length; i++)
        {
           //Сохраняю фотографии в папку на сервере, после чего записываю в массив путь к этой фотографии
          photos[i].SaveAs(Server.MapPath("~/images/Photos/"  + photoNames[i]));
            photoURLs[i] = "~/images/Photos/" + photoNames[i];
        }
        string generalPhotoURL = null;
        if (generalPhoto != null && generalPhotoSize > 2000000)
        {
            string generalPhotoName = System.IO.Path.GetFileName(generalPhoto.FileName);
            generalPhoto.SaveAs(Server.MapPath("~/images/GeneralPhotos/" + generalPhotoName));
            generalPhotoURL = "~/images/GeneralPhotos/" + generalPhotoName;
        }
        else
        {
            return PartialView("Error");
        }
        string imgURLs = null;
        for(int i = 0; i <= photoURLs.Length; i++)
        {
            imgURLs += photoURLs[i] + "," + " ";
        }
        return PartialView();
    }

Вот код созданной формы:

<form action="/Home/PhotoSessionInfo" data-ajax="true" data-ajax-loading="#loading-spin" data-ajax-mode="replace" data-ajax-update="#generalPhotoPos" id="form0" method="post">... </form>

При нажатии кнопки "Отправить" в консоли браузера выдает появляется несколько сообщение об ошибке:

А такая ошибка появляется в Visual Studio

Вот ответ:

<html>
<head>
    <title>Для данного объекта не определено беспараметрических конструкторов.</title>
    <meta name="viewport" content="width=device-width" />
    <style>
     body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 
     p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
     b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
     H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
     H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
     pre {font-family:"Consolas","Lucida Console",Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt}
     .marker {font-weight: bold; color: black;text-decoration: none;}
     .version {color: gray;}
     .error {margin-bottom: 10px;}
     .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
     @media screen and (max-width: 639px) {
      pre { width: 440px; overflow: auto; white-space: pre-wrap; word-wrap: break-word; }
     }
     @media screen and (max-width: 479px) {
      pre { width: 280px; }
     }
    </style>
</head>
<body bgcolor="white">
        <span><H1>Ошибка сервера в приложении '/'.<hr width=100% size=1 color=silver></H1>
        <h2> <i>Для данного объекта не определено беспараметрических конструкторов.</i> </h2></span>
        <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
        <b> Описание: </b>Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.
        <br><br>
        <b> Сведения об исключении: </b>System.MissingMethodException: Для данного объекта не определено беспараметрических конструкторов.<br><br>
        <b>Ошибка источника:</b> <br><br>
        <table width=100% bgcolor="#ffffcc">
           <tr>
              <td>
                  <code>

Необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно получить, используя следующую трассировку стека исключений.

              </td>
           </tr>
        </table>
        <br>
        <b>Трассировка стека:</b> <br><br>
        <table width=100% bgcolor="#ffffcc">
           <tr>
              <td>
                  <code><pre>

[MissingMethodException: Для данного объекта не определено беспараметрических конструкторов.]

Вот информация заголовков: General :

Request URL: http://localhost:55488/Home/PhotoSessionInfo

Request Method: POST

Status Code: 500 Internal Server Error

Remote Address: [::1]:55488

Referrer Policy: no-referrer-when-downgrade

Response Headers :

Cache-Control: private

Content-Length: 12631

Content-Type: text/html; charset=utf-8

Date: Sat, 04 Aug 2018 11:31:34 GMT

Server: Microsoft-IIS/10.0

X-AspNet-Version: 4.0.30319

X-Powered-By: ASP.NET

X-SourceFiles: =?UTF-8?B?YzpcdXNlcnNcYXN1c1xzb3VyY2VccmVwb3NcUGhvdG9fR2FsbGVyeVxQaG90b19HYWxsZXJ5XEhvbWVcUGhvdG9TZXNzaW9uSW5mbw==?=

Request Headers:

Accept: /

Accept-Encoding: gzip, deflate, br

Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7

Connection: keep-alive

Content-Length: 48

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Host: localhost:55488

Origin: http://localhost:55488

Referer: http://localhost:55488/Home/DataCheck

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36

X-Requested-With: XMLHttpRequest

Fprm Data :

sessionName: Alex

X-Requested-With: XMLHttpRequest

Вот весь код контроллера, как и просили. Я многое закомментировал, так как большая часть код метода PhotoSessionInfo ни на что не влияет:

 public class HomeController : Controller
{
      public ActionResult Index()
    {

        return View("Index");

    }
    [HttpPost]
    public ActionResult DataCheck (string adminlogin, string adminpassword)
    {
        if(adminlogin == "Kate_adm" && adminpassword == "1234520")
        {
            return View("Admin_Page");
        }
        else
        {
            ViewBag.Text = "Неверно введены данные.";
            return View("Index");
        } 
    }
    [HttpPost]
    public PartialViewResult PhotoSessionInfo (HttpPostedFile generalPhoto, string sessionName, HttpPostedFile photos)
    {
        long generalPhotoSize = new  System.IO.FileInfo(generalPhoto.ToString()).Length;
        //string[] photoNames = new string[photos.Length];

        //for (int photo = 0; photo<= photos.Length; photo++ )
        //{
        //    //Если данные больше 2мб, то возвражается представление с сообщением об ошибке
        //    long size = new System.IO.FileInfo(photo.ToString()).Length;
        //    if (size > 2000000 && photos.Length ==0)
        //    {
        //        return PartialView("Error");
        //    }
        //     photoNames[photo] =  System.IO.Path.GetFileName(photos[photo].FileName);
        //}
        //string [] photoURLs = new string[photos.Length];
        //for(int i =0; i<=photoNames.Length; i++)
        //{
        //   //Сохраняю фотографии в папку на сервере, после чего записываю в массив путь к этой фотографии
        //  photos[i].SaveAs(Server.MapPath("~/images/Photos/"  + photoNames[i]));
        //    photoURLs[i] = "~/images/Photos/" + photoNames[i];
        //}
        //string generalPhotoURL = null;
        //if (generalPhoto != null && generalPhotoSize > 2000000)
        //{
        //    string generalPhotoName = System.IO.Path.GetFileName(generalPhoto.FileName);
        //    generalPhoto.SaveAs(Server.MapPath("~/images/GeneralPhotos/" + generalPhotoName));
        //    generalPhotoURL = "~/images/GeneralPhotos/" + generalPhotoName;
        //}
        //else
        //{
        //    return PartialView("Error");
        //}
        //string imgURLs = null;
        //for(int i = 0; i <= photoURLs.Length; i++)
        //{
        //    imgURLs += photoURLs[i] + "," + " ";
        //}
        return PartialView();
    }
READ ALSO
Считывать &ldquo;свайпы&rdquo; пальцем по экрану Unity C#

Считывать “свайпы” пальцем по экрану Unity C#

Мне нужно отслеживать свайп пальцем на "Unity c#"Мне надо чтобы когда игрок делал свайп по экрану, игровая камера двигалась по карте, но не выходила...

195
C# Entity Framework Foreign Key

C# Entity Framework Foreign Key

Существует 3 таблицы :

221
Сделать разгоняющийся объект на C# Unity

Сделать разгоняющийся объект на C# Unity

Нужно сделать так чтобы ракета разгонялась потихоньку ну в идеале чтобы она реалестично разгоняласьВот пример моего скрипта

193