2017-12-19 17 views
1

ajax에 약간의 문제가 있습니다. 그러니 먼저 내 행동을 보여 줄거야.Ajax가 MVC 컨트롤러로 양식 ID를 보낼 수 없습니다.

형태 :

public JsonResult AddQuestion(SurveyQuestion model, int id) 
{ 
    SurveyQuestion question = new SurveyQuestion(); 
    question.Body = model.Body; 
    question.CreatedOn = DateTime.Now; 
    question.ModifiedOn = DateTime.Now; 
    question.Priority = 0; 
    question.SurveyId = id; 
    question.Text = model.Text; 
    question.Type = QuestionType.Text; 

    _db.SurveyQuestions.Add(question); 
    _db.SaveChanges(); 
    return Json(question, JsonRequestBehavior.AllowGet); 
} 

나는 코드의 모든 부분을 작성하지 않았다 :

$("#btnSubmit").click(function() { 
    var data = $('#QuestionForm').serialize(); 

    $.ajax({ 
     type: "POST", 
     url: "/Survey/AddQuestion", 
     data: {data, @Model.Survey.Id}, 
     success: function() { 
      $("#AddQuestion").modal("hide"); 
      //alert("Survey Added"); 
      location.reload(); 
     } 
    }) 

}) 

가 여기 내 컨트롤러 액션의 :

<form id="QuestionForm"> 
    @Html.TextBoxFor(model => model.Body, new { @class = "form-control", @placeholder = "Body" }) 
    @Html.TextBoxFor(model => model.Text, new { @class = "form-control", @placeholder = "Text" }) 
</form> 

것은 여기 내 스크립트와 Ajax 코드의 , 그 중 일부는 나중에 코딩 할 것이기 때문에 하드 코드 된 것입니다. 그러나 문제는 두 가지를 보내는 것입니다. ID를 보내고 컨트롤러에서 ID를 삭제하지 않으면 직렬화 된 모델을 잘 보냅니다. 그러나 둘 다 보내면 ID를 가져 오지만 그에게 보낸 모델은 가져 오지 않습니다 (텍스트 및 본문 null의 경우) 이 문제를 어떻게 해결할 수 있습니까?

+0

당신이 – Krishjs

+0

할 수있는 쿼리 문자열로 ID를 전달할 수 없습니다 게시물에 여러 매개 변수를 전달,이 시도하거나 쿼리 문자열을 사용하여 전달할 수 있습니다 그걸 대답으로 붙여주세요. – HighSepton

+0

해 주셔서 감사합니다. FromUri – Krishjs

답변

2

아래처럼 작업을 수행 할 수 있습니다

$("#btnSubmit").click(function() { 

    $.ajax({ 
     type: "POST", 
     url: "/Survey/AddQuestion", 
     // Add id like query string parameter like below 
     data: $('#QuestionForm').serialize() + '&id=' + @Model.Survey.Id, 
     success: function() { 
      $("#AddQuestion").modal("hide"); 
      //alert("Survey Added"); 
      location.reload(); 
     } 
    }) 
}) 
+0

작품을 완벽하게 추가 할 수 있습니다! 감사! – HighSepton

+0

@HighSepton 당신은 환영합니다 :) –

+0

@ Krishjs 맞아요, 제 의견을 편집했습니다. –

0

당신이 URL의 ID를 넣을 수 있습니다

$("#btnSubmit").click(function() { 
    var data = $('#QuestionForm').serialize(); 

    $.ajax({ 
    type: "POST", 
    url: "/Survey/[email protected]", 
    data: {data}, 
    success: function() { 
     $("#AddQuestion").modal("hide"); 
     //alert("Survey Added"); 
     location.reload(); 
    } 
    }) 

}) 
+0

이 코드는 작동하지 않습니다. – HighSepton

+0

미안하지만, ID 매개 변수 뒤에 "?", – Hyeongo

1

패스 ID 컨트롤러를 사용 FromUri에서 쿼리 문자열 매개 변수

$("#btnSubmit").click(function() { 
    var data = $('#QuestionForm').serialize(); 

    $.ajax({ 
    type: "POST", 
    url: "/Survey/AddQuestion?id=" + '@Model.Survey.Id', 
    data: {data, @Model.Survey.Id}, 
    success: function() { 
     $("#AddQuestion").modal("hide"); 
     //alert("Survey Added"); 
     location.reload(); 
    } 
}) 
}) 

로 매개 변수 앞에 속성이 있습니다.

다른 답변

$("#btnSubmit").click(function() { 
    var data = $('#QuestionForm').serialize(); 

    $.ajax({ 
     type: "POST", 
     url: "/Survey/AddQuestion", 
     data: {model : data, id: @Model.Survey.Id}, 
     success: function() { 
      $("#AddQuestion").modal("hide"); 
      //alert("Survey Added"); 
      location.reload(); 
     } 
    }) 

}) 

컨트롤러와 같이

public JsonResult AddQuestion(SurveyQuestion model,[FromUri]int id) 
{ 

    SurveyQuestion question = new SurveyQuestion(); 
    question.Body = model.Body; 
    question.CreatedOn = DateTime.Now; 
    question.ModifiedOn = DateTime.Now; 
    question.Priority = 0; 
    question.SurveyId = id; 
    question.Text = model.Text; 
    question.Type = QuestionType.Text; 

    _db.SurveyQuestions.Add(question); 
    _db.SaveChanges(); 
    return Json(question, JsonRequestBehavior.AllowGet); 
} 
0

public ActionResult ActionName(SurveyQuestion model, int id) 
{ 
    Your Code ....... 
} 
+0

이 작동하지 않습니다, 나는 이것을 시도했지만, 이미 내 질문에 대한 답변을 가지고있어, 어쨌든 감사합니다! – HighSepton