Всем добрый день. Пытаюсь отправить 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();
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Мне нужно отслеживать свайп пальцем на "Unity c#"Мне надо чтобы когда игрок делал свайп по экрану, игровая камера двигалась по карте, но не выходила...
Нужно сделать так чтобы ракета разгонялась потихоньку ну в идеале чтобы она реалестично разгоняласьВот пример моего скрипта