Как передать значение формы в контроллер с помощью Ajax (какой тип мне нужен в части контроллера, чтобы принимать отправленные данные) - PullRequest
0 голосов
/ 05 июня 2019

Я хочу преобразовать данные моей формы в массив, используя метод serializeArray (), а затем я хочу передать это методу POST моего контроллера в качестве параметра, но я попытался string, string [], object, object[] и последнее, но не менее важное Вопрос и вопрос [] (Вопрос - это мой ViewModal, который описывает форму вопроса), но работает только Вопрос .Но это не работает для более чем одного вопроса в представлении.

Я сделал JSON.stringify ($ ("ourForm"). SerializeArray ()) , он выполняет свою работуно все же я не могу передать данные в контроллер.(попробовал String и String [], которые я видел на этой платформе, но они не работают.)

Как я могу сделать эту работу, ребята, мне действительно нужна помощь ...

КОНТРОЛЛЕР:

[HttpPost]
    public ActionResult CreateExam(String[] formdata) // 
    {
        var abc = formdata;
        return RedirectToAction("index");

    }

Javascript код:

$("#submitForm").click(function () {
            var formdata = $("#ourForm").serializeArray();

            $.ajax({
            type: "POST",
                url: "/Teacher/Exam/CreateExam",
                traditional: true,
                data: formdata,
                success: function (data) {
                    alert("BAŞARILI?");
                    // Do something here when it is finished
                }
            });
        });

ViewModal:

public class Questions
    {        
        public IList<Questions> questions { get; set; }
        [Display(Name ="QUESTION GOES HERE")]
        public string question_string { get; set; }
        public string A { get; set; }
        public string B { get; set; }
        public string C { get; set; }
        public string D { get; set; }
        public string E { get; set; }
        [Display(Name ="CORRECT ANSWER")]
        public string correct_answer { get; set; }
    }

И моя форма: (Я использовал частичное представление, потому что мне нужно, чтобы пользователи добавляли какмногие вопросы, которые они хотят, и я получил его работать с некоторым кодом JS)

<form class="form-horizontal style-form" id="ourForm">
            <div class="form-panel">
                <button type="button" class="btn btn-success newQuest"><i class="fa-plus">  Yeni Soru Ekle</i></button>
                @Html.Partial("_QuestionLayout", Model)
            </div>
            <button type="button" class="btn btn-primary" id="submitForm">SAVE THE EXAM</button>
        </form>

ViewModal:

<div id="newForm">
    <div class="form-group" style="margin-right: 0px;">
        <div class="col-lg-12">
            <hr />

            <button type="button" class="btn btn-danger delete pull-right"><i class="fa-plus">  SORUYU SİL</i></button>
            <button type="button" class="btn btn-success newQuest pull-right"><i class="fa-plus">  YENİ SORU EKLE</i></button>
            @Html.LabelFor(m => m.question_string, new { @class = "control-label col-md-3" })
            @Html.TextAreaFor(m => m.question_string, new { @class = "form-control", placeholder = "Soru buraya yazılacak.", style = "max-width:100%; min-width:100%" })

        </div>
    </div>
    <div class="form-group">

        <div class="col-md-8 col-xs-11">
            @Html.LabelFor(m => m.A, new { @class = "col-sm-2 col-sm-2 control-label" })
            @Html.TextBoxFor(m => m.A, new { @class = "col-sm-10" })
        </div>
    </div>
    <div class="form-group">

        <div class="col-md-8 col-xs-11">
            @Html.LabelFor(m => m.B, new { @class = "col-sm-2 col-sm-2 control-label" })
            @Html.TextBoxFor(m => m.B, new { @class = "col-sm-10" })
        </div>
    </div>
    <div class="form-group">

        <div class="col-md-8 col-xs-11">
            @Html.LabelFor(m => m.C, new { @class = "col-sm-2 col-sm-2 control-label" })
            @Html.TextBoxFor(m => m.C, new { @class = "col-sm-10" })
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-8 col-xs-11">
            @Html.LabelFor(m => m.D, new { @class = "col-sm-2 col-sm-2 control-label" })
            @Html.TextBoxFor(m => m.D, new { @class = "col-sm-10" })
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-8 col-xs-11">
            @Html.LabelFor(m => m.E, new { @class = "col-sm-2 col-sm-2 control-label" })
            @Html.TextBoxFor(m => m.E, new { @class = "col-sm-10" })
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-8 col-xs-11">
            @Html.LabelFor(m => m.correct_answer, new { @class = "col-sm-2 col-sm-2 control-label" })
            @Html.TextBoxFor(m => m.correct_answer, new { @class = "col-sm-1" })
        </div>
    </div>
</div>

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

JSON.stringify (formdata) выполняет свою работу. НО

данные должны быть такими в блоке AJAX;

data = {formdata = JSON.Stringify (formdata)}

0 голосов
/ 05 июня 2019

Вам необходимо соответствующим образом установить тип контента при вызове ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...