从部分视图表单提交回到之前的ajax状态

时间:2017-12-13 07:40:15

标签: jquery ajax asp.net-mvc-5 partial-views

我正在努力为学生添加批量,在插入录音之前,我通过ajax调用显示部分视图以查看交易详情。此部分视图通过后期操作控制器提交表单,该控制器插入学生交易详细信息的详细信息以及插入学生的批次。但是我不知道如何在成功响应函数中回到我的ajax之前的状态。 以下是我的代码。

Create.cshtml

<script>
    $(".btn").click(function () {
        var Id = $(this).attr('id');
        $.ajax({
            type: "POST",
            url: '@Url.Action("AddStudentTransaction", "Student")',
            data: { SelectedId: Id },
            dataType: "html",
            success: function (response)
            {
                // Want to get back here from partial view
                $('#dialog').html(response);
                $('#dialog').dialog('open');
                var tblEndrolled = $("#tblEnrolled");
                $.each(data, function (index, item) {
                    var tr = $("<tr></tr>");
                    tr.html(("<td>" + '<input type="submit" id="' + item.Id + '" value="Remove" class="btn" />' + "</td>")
                    //+ " " + ("<td>" + item.Id + "</td>")
                    + " " + ("<td>" + item.FirstName + "</td>")
                    + " " + ("<td>" + item.LastName + "</td>")
                    + " " + ("<td>" + item.EmailAddress + "</td>")
                    + " " + ("<td>" + item.Phone + "</td>"));
                    tblEndrolled.append(tr);
                });
            }, failure: function (response) {
                alert(response.responseText);
            },
            error: function (response) {
                alert(response.responseText);
            }
        });
    });
</script>

StudentController.cs

[HttpPost]
public PartialViewResult AddStudentTransaction(Models.StudentBatch student,string SelectedId)
{
    student.batchId = "30a547ad-ef04-41c4-95f8-60b37f004983";
    Context.Student contStud = new Context.Student();

    Context.Transaction contTrans = new Context.Transaction();
    Models.Transaction transaction = new Models.Transaction();
    transaction.lstTransactionMode = contTrans.GetTransactionMode();
    transaction.lstTransactionType = contTrans.GetTransactionTypes();
    transaction.UserId = SelectedId;
    ViewBag.BatchId = student.batchId;
    return PartialView("AddStudentTransaction", transaction);
}

[HttpPost]
public ActionResult CreateStudentWithTransaction(Models.Transaction transaction, string SelectedId, string id)
{
    try
    {
        transaction.Id = Guid.NewGuid().ToString();
        string batchid = "30a547ad-ef04-41c4-95f8-60b37f004983";
        Context.Transaction contTransaction = new Context.Transaction();
        transaction.Date = DateTime.Now;
        bool result = contTransaction.AddTransaction(transaction);
        if (result == true)
        {
            Context.Student contStudent = new Context.Student();
            Models.StudentBatch student = new Models.StudentBatch();
            student.batchId = batchid;
            student.studentId = transaction.UserId;
            student.Transactionid = transaction.Id;
            student.RemainingAmount = "0";
            student.Status = "Clear";
            contStudent.AddNewStudentBatch(student);
            CreateUser user = new CreateUser();
            var StudentList = user.GetAllUsers().ToList().Where(u => u.Id == transaction.UserId);
            ViewBag.Value = StudentList;
        }
        // TODO: Add insert logic here
        return Json(ViewBag.Value, JsonRequestBehavior.AllowGet);
        //return RedirectToAction("Index");
    }
    catch(Exception e)
    {
        return View();
    }
}

AddStudentTransaction.cshtml

@using (Html.BeginForm("CreateStudentWithTransaction", "Student", FormMethod.Post)) 
{
    // all the required controls
}

StudentController.cs

0 个答案:

没有答案