如何在Ajax成功中从返回的部分视图的隐藏输入字段访问值?

时间:2019-01-24 12:43:44

标签: c# html ajax asp.net-mvc-5

我有局部视图_Index,其中有<button class="btn btn-primary" id="btnRejectAdmissionn">Reject Admission</button>,单击此按钮后,显示ID为myModalAdmRej的boostrap模式,其中包含文本区域和按钮<button type="button" class="btn btn-default" id="btnReject">Reject</button>添加拒绝备注,然后单击此按钮,将对动作RejectAdmission1进行AJAX调用,该动作将重定向到部分视图_Index,并且在变量result中分配了值。

现在,结果变量中的该值已分配到tempdata TempData["mgsId"]中。并在部分视图<input id="inpMsgVal" name="abc" type="hidden" value="@TempData["mgsId"]" />和部分视图Index中存在的隐藏输入字段@Html.Partial("_Index", Model)中分配了该tempdata值。  在主视图Index中被调用。

现在,我要尝试的是访问该隐藏输入字段的值

<input id="inpMsgVal" name="abc" type="hidden" value="@TempData["mgsId"]" />

单击模式上的按钮<button type="button" class="btn btn-default" id="btnReject">Reject</button>以添加拒绝备注。

我的代码存在的问题是,即使隐藏字段具有值,通过var getId = $("tr").find("input#inpMsgVal").val();变量在AJAX上访问该值时也没有该值getId = ""

因此,与我的代码的任何联系都将是一个很大的帮助。

下面是我到目前为止所做的。

下面是我的主视图Index,其中调用了局部视图,并且在该视图中也以类似模式的方式编写了我的ajax,该视图中还具有调用AJAX的按钮。

     <div class="box-body">
            <div class="box-body table-responsive no-padding">
                <table class="table table-hover">
                    <thead>
                        <tr>
                            <th>Full Name</th>
                            <th>Grade</th>
                            <th>Admission Status</th>
                            <th>Admission Date</th>
                            <th>Rejection Reason</th>
                            <th>Action</th>
                        </tr>
                    </thead>
                    <tbody id="studentrejectiontbody">
                        @Html.Partial("_Index", Model)
                    </tbody>
                </table>
            </div>
        </div>



以下是我的局部视图_Index

@foreach (var item in Model)
{
<tr>
    <input id="inpMsgVal" name="abc" type="hidden" value="@TempData["mgsId"]" />

    @Html.HiddenFor(x => item.studentid, new { @id = "studentidforRejectectionadmission" })
    <td>@Html.DisplayFor(modelItem => item.fullname)</td>
    <td>@Html.DisplayFor(modelItem => item.classname)</td>

    <td>@Html.DisplayFor(modelItem => item.rejectionreason)</td>
    <td>
        <button class="btn btn-primary" id="btnRejectAdmissionn">Reject Admission</button>
    </td>
</tr>
}



以下是主视图中的模式,即Index

<div class="modal fade" id="myModalAdmRej" role="dialog">
<div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <h4 class="modal-title">Reject Admission</h4>
        </div>
        <div class="modal-body" id="rejectmodalbody" studentIdForRejection="">
            <div class="form-group">
                <label for="comment">Admission Rejection Remarks:</label>
                <textarea class="form-control" rows="5" id="rejectRemarks"></textarea>
            </div>
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default" id="btnReject">Reject</button>
        </div>
    </div>
</div>



以下是我的AJAX,它显示在主视图Index中,是在模式视图中的按钮单击时调用的,该按钮也出现在同一视图中

<script>
$("button#btnReject").click(function () {
    debugger;
    var studentid = $("div#rejectmodalbody").attr("studentIdForRejection")
    var remarks = $("textarea#rejectRemarks").val();

    $.ajax({
        type: 'post',
        url: '/AdmissionRejections/RejectAdmission1',
        dataType: 'html',
        data: { studentId: studentid, rejRemarks: remarks },
        success: function (data) {
            debugger
            var getId = $("tr").find("input#inpMsgVal").val();
            if (getId == "1") {


                $("textarea#rejectRemarks").val('');
                $("tbody#studentrejectiontbody").html(data);
                SuccessAlert("Admission Rejected Successfully", 5000);
                $("#myModalAdmRej").modal('hide');
            }
            else {
                $("textarea#rejectRemarks").val('');
                $("tbody#studentrejectiontbody").html(data);
                ErrorAlert("Student Has Not Doone Admission Yet", 5000);
                $("#myModalAdmRej").modal('hide')
            }
        }
    })
});



以下是我的控制器操作

     public ActionResult Index()
    {
        var getList = ser.GetAllStudentForRejection();
        return View(getList);
    }
    public ActionResult _Index(string studentName,int studentId = 0, int result =0)
    {
        if (studentId == 0)
        {
            TempData["mgsId"] = result;
            var getList = ser.GetAllStudentForRejection();              
            return View(getList);
        }
        else
        {
            if (studentName != null && studentName !="")
            {
                TempData["mgsId"] = result;
                var getList = ser.SearchStudentForRejection(studentId);
                return View(getList);
            }
            else
            {
                TempData["mgsId"] = result;
                var getList = ser.GetAllStudentForRejection();
                return View(getList);
            }              
        }
    }
    [HttpPost]
    public ActionResult RejectAdmission1(int studentId, string rejRemarks)
    {
        var getData = ser.RejectAdmission(studentId, rejRemarks);
        return RedirectToAction("_Index", new { result = getData });
    }

0 个答案:

没有答案