AJAX가 포함된 JavaScript 어레이를 asp.net MVC 컨트롤러에 게시
내 컨트롤러:
[HttpPost]
public ActionResult AddUsers(int projectId, int[] useraccountIds)
{
...
}
AJAX를 통해 컨트롤러에 파라미터를 게시하고 싶습니다.전달int projectId
문제는 없지만, 저는 그것을 게시할 수 없습니다.int[]
.
내 JavaScript 코드:
function sendForm(projectId, target) {
$.ajax({
traditional: true,
url: target,
type: "POST",
data: { projectId: projectId, useraccountIds: new Array(1, 2, 3) },
success: ajaxOnSuccess,
error: function (jqXHR, exception) {
alert('Error message.');
}
});
}
테스트 어레이로 시도해봤지만 성공하지 못했습니다. :( 설정도 시도했습니다.traditional: true
또는contentType: 'application/json; charset=utf-8'
하지만 역시 성공하지 못했습니다...
그int[] useraccountIds
컨트롤러에 게시된 파일은 항상 null입니다.
뷰 모델을 정의할 수 있습니다.
public class AddUserViewModel
{
public int ProjectId { get; set; }
public int[] userAccountIds { get; set; }
}
그런 다음 이 보기 모델을 매개 변수로 사용하도록 컨트롤러 작업을 조정합니다.
[HttpPost]
public ActionResult AddUsers(AddUserViewModel model)
{
...
}
마지막으로 호출합니다.
function sendForm(projectId, target) {
$.ajax({
url: target,
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
projectId: projectId,
userAccountIds: [1, 2, 3]
}),
success: ajaxOnSuccess,
error: function (jqXHR, exception) {
alert('Error message.');
}
});
}
JS에서:
var myArray = new Array();
myArray.push(2);
myArray.push(3);
$.ajax({
type: "POST",
url: '/MyController/MyAction',
data: { 'myArray': myArray.join() },
success: refreshPage
});
MVC/C#에서:
public PartialViewResult MyAction(string myArray)
{
var myArrayInt = myArray.Split(',').Select(x=>Int32.Parse(x)).ToArray();
//My Action Code Here
}
달러 사용.Ajax(), 당신은 자바스크립트의 데이터를 MVC의 Controller로 쉽게 가져올 수 있습니다.
마치.
var uname = 'John Doe';
$.ajax({
url: "/Main/getRequestID", // This is path of your Controller with Action Result.
dataType: "json", // Data Type for sending the data
data: { // Data that will be passed to Controller
'my_name': uname, // assign data like key-value pair
// 'my_name' like fields in quote is same with parameter in action Result
},
type: "POST", // Type of Request
contentType: "application/json; charset=utf-8", //Optional to specify Content Type.
success: function (data) { // This function is executed when this request is succeed.
alert(data);
},
error: function (data) {
alert("Error"); // This function is executed when error occurred.
}
)};
그런 다음 컨트롤러 쪽에서
public ActionResult getRequestID(String my_name)
{
MYDBModel myTable = new Models.MYDBModel();
myTable.FBUserName = my_name;
db.MYDBModel.Add(myTable);
db.SaveChanges(); // db object of our DbContext.cs
//return RedirectToAction(“Index”); // After that you can redirect to some pages…
return Json(true, JsonRequestBehavior.AllowGet); // Or you can get that data back after inserting into database.. This json displays all the details to our view as well.
}
언급.MVC의 Java 스크립트에서 컨트롤러로 데이터 전송
어레이를 mvc 엔진에 전달하려면 입력을 여러 번 전송합니다.코드를 다음으로 변경합니다.
function sendForm(projectId, target) {
var useraccountIds = new Array(1, 2, 3);
var data = { projectId: projectId };
for (var i = 0; i < useraccountIds.length; i++) {
$.extend(true, data, {useraccountIds: useraccountIds[i]});
}
$.ajax({
traditional: true,
url: target,
type: "POST",
data: data,
success: ajaxOnSuccess,
error: function (jqXHR, exception) {
alert('Error message.');
}
});
}
클래스에 직렬화 가능한 특성을 배치합니다.그런 다음 당신이 전달하고 있는 자바스크립트 객체를 C# 클래스로 변환하려고 할 것입니다.
JS:
{
ProjectId = 0,
userAccountIds = []
}
// C#
[Serializable]
public class AddUserViewModel
{
public int ProjectId { get; set; }
public int[] userAccountIds { get; set; }
}
Ajax 요청(Post/Get)에 속성이 있는지 지정하지 않으면 작동하지 않습니다.traditional
true로 설정됩니다.자세한 내용은 이 질문을 참조하십시오.
언급URL : https://stackoverflow.com/questions/15782417/post-javascript-array-with-ajax-to-asp-net-mvc-controller
'code' 카테고리의 다른 글
JavaScript를 사용하여 특정 지연 후 스크립트 실행 (0) | 2023.08.26 |
---|---|
sql 쿼리를 사용하여 문자열을 int로 변환 (0) | 2023.08.26 |
동일한 간격으로 전체 너비를 채우는 SwiftUI H 스택 (0) | 2023.08.26 |
IE 11 브라우저에 jQuery AJAX POST 요청용 Content-Length=0이 랜덤으로 있는 이유는 무엇입니까? (0) | 2023.08.26 |
백그라운드 작업, 진행 상황 대화, 방향 변경 - 100% 작동하는 솔루션이 있습니까? (0) | 2023.08.26 |