Прошло 3 дня, я пытаюсь отправить данные формы [POST] с помощью ajax, Javascript и HTML в контроллер MVC, но получаю значение null.
Пожалуйста, найдите контроллер и код ajax, пожалуйста, помогите мне в этом, а также дайте мне знать, возможно или нет отправлять данные с ajax на контроллер mvc?
Я новичок ..... заранее спасибо.
[HttpPost]
[AllowAnonymous]
public async Task<IActionResult> CreateNewBug([FromBody] BugTrackerRequest bugTrackerRequest)
{
// BugTrackerResponse bugTrackerResponse = null;
if (ModelState.IsValid)
{
var Request = await _projectDetails.CreateNewBug(bugTrackerRequest);
if (Request > 0)
{
BugTrackerResponse bugTrackerResponse = new BugTrackerResponse();
bugTrackerResponse.Issuccess = true;
// return Ok(new {Messgage = "Data save successfully in the DB"});
return Ok();
}
}
return StatusCode(500, new { Message = "Something went wrong" });
// return bugTrackerResponse;
//return StatusCode();
}
public class BugTrackerRequest:APIResponse
{
public int TicketId { get; set; }
public string ProjectName { get; set; }
public string ProjectDescription { get; set; }
public string Title { get; set; }
public string Status { get; set; }
public string AssignTo { get; set; }
public string AssignFrom { get; set; }
public byte[] Attachment { get; set; }
public string Impact { get; set; }
public string Platform { get; set; }
public string Priority { get; set; }
public string BugType { get; set; }
public DateTime CreatedDate { get; set; }
}
}
function savedetails() {
let saveuidetails = new BugdetailRequestclass();
saveuidetails.ProjectName = $('#projectprojectname').val();
saveuidetails.ProjectDescription = $('#description').val();
saveuidetails.Title = $('#title').val();
saveuidetails.Status = $('#status').val();
saveuidetails.AssignTo = $('#assignto').val();
saveuidetails.AssignFrom = $('#assignfrom').val();
saveuidetails.Attachment = $('#Attfileupload').val;
saveuidetails.Impact = $('#Priority').val();
saveuidetails.Platform = $('#platform').val();
saveuidetails.Priority = $('#Priority').val();
saveuidetails.BugType = $('bugtype').val();
saveuidetails.CreatedDate = $('#currentdate').val();
$.ajax({
type: 'POST',
url: '/TicketController1/CreateNewBugFromBody',
dataType: "json",
contentType: 'application/json',
data: JSON.stringify(saveuidetails),
success: function (data) {
console.info('success', data);
},
error: function () { alert('Exeption:'); }
});
}
нет ошибки входа в консоль браузера



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваш URL-адрес в POST неверен, измените его.
/TicketController1/CreateNewBugFromBody
к
/TicketController1/CreateNewBug
Убедитесь, что ваш класс контроллера называется TicketController1.
Для начала прокомментируйте
saveuidetails.Attachment = $('#Attfileupload').val;
в js и
public DateTime CreatedDate { get; set; }
public byte[] Attachment { get; set; }
Когда метод контроллера работает, вы можете посмотреть на Attachment, что будет проблемой.
В основном у вас есть три варианта (https://stackoverflow.com/a/4083908/14072498):
В противном случае ваш код, показанный здесь, выглядит нормально для меня, и нет проблем с использованием для этого контроллера MVC. Если контроллер содержит только методы API, вы должны расширить его от ControllerBase вместо Controller и аннотировать контроллер [ApiController]. Последний автоматически вызывает проверку модели.
При реализации новых конечных точек API всегда начинайте с чего-то простого и проверяйте, например, Почтальон, что вы можете добраться до своей новой конечной точки.
url: '/TicketController1/CreateNewBugFromBody', public async Task<IActionResult> CreateNewBug([FromBody] BugTrackerRequest bugTrackerRequest)
Во-первых, проверьте URL-адрес вашего запроса и метод действия, кажется, что вы отправляете форму методу CreateNewBugFromBody, а не методу действия CreateNewBug. Поэтому попробуйте изменить свой код, как показано ниже (я предполагаю, что имя вашего контроллера TicketController1, и вы хотите отправить метод CreateNewBug):
$.ajax({
type: 'POST',
url: '/TicketController1/CreateNewBug',
dataType: "json",
contentType: 'application/json',
data: JSON.stringify(saveuidetails),
success: function (data) {
console.info('success', data);
},
error: function () { alert('Exeption:'); }
});
Во-вторых, проверьте свой объект JQuery BugdetailRequestclass, в методе действия он получает объект BugTrackerRequest. Итак, попробуйте изменить свой код, как показано ниже (пожалуйста, измените URL-адрес запроса и значение селектора jquery на свое):
function savedetails() {
var saveuidetails = {}; //define a object
saveuidetails.ProjectName = $('#ProjectName').val();
saveuidetails.ProjectDescription = $('#Description').val();
saveuidetails.Title = $('#Title').val();
saveuidetails.Status = $('#Status').val();
saveuidetails.AssignTo = $('#AssignTo').val();
saveuidetails.AssignFrom = $('#AssignFrom').val();
saveuidetails.Attachment = $('#Attfileupload').val;
saveuidetails.Impact = $('#Priority').val();
saveuidetails.Platform = $('#Platform').val();
saveuidetails.Priority = $('#Priority').val();
saveuidetails.BugType = $('#BugType').val();
saveuidetails.CreatedDate = $('#CreatedDate').val();
$.ajax({
type: 'POST',
url: '/Home/CreateNewBug',
dataType: "json",
contentType: 'application/json',
data: JSON.stringify(saveuidetails),
success: function (data) {
console.info('success', data);
},
error: function () { alert('Exeption:'); }
});
}
Кроме того, вы можете добавить точку останова в ресурс JavaScript и метод действия CreateNewBug и проверить, сможете ли вы получить правильные данные до/после отправки запроса Ajax. Скриншот, как показано ниже:
Скриншот отладки JavaScript (с использованием инструментов разработчика F12)
Скриншот отладки метода действия:
Большое спасибо @Zhi Lv, теперь он работает нормально после изменений, которые вы мне сказали ... также не могли бы вы помочь мне, как мне улучшить логику кода с помощью самостоятельных упражнений.
@KuwarpratapSingh: Если этот ответ решил вашу проблему, отметьте его как принятый. Если вам нужно что-то еще, пожалуйста, задайте новый вопрос. BR
вы видите какую-либо ошибку в консоли браузера?