如果选中了单选按钮,则将表行中的模型数据获取到控制器/模型

时间:2019-04-25 14:06:28

标签: javascript jquery html ajax asp.net-mvc

因此,我正在动态制作其中具有单选按钮的表行。我希望用户能够选择一个单选按钮,这就是添加到模型中的信息。

HTML

好,所以我有一个表,表完全是空的。当用户搜索客户时,表格将添加行(单击搜索按钮时)。但是首先,这就是我们所拥有的:

    <div class="row border mt-3 p-3" id="policyInfo">
    <div class="input-group mb-3 ">
        <h3 class="col-lg-12 blue redUnderline">Policy Information</h3>
    </div>

    <TABLE class="table mt-3" id="policyTable">
        <thead>
            <tr>
                <th scope="col">@Html.LabelFor(m => m.PolicyTypes)</th>
                <th scope="col">@Html.LabelFor(m => m.policyID)</th>
                <th scope="col">@Html.LabelFor(m => m.PolicyExpirationDate)</th>
                <th scope="col"> @Html.LabelFor(m => m.PolicyStatus)</th>
                <th scope="col"> @Html.LabelFor(m => m.Agency)</th>
                <th scope="col"> @Html.LabelFor(m => m.AgencyCert)</th>
            </tr>
        </thead>
        <TR></TR>
    </TABLE>

</div>

它看起来像这样:

enter image description here

JQUERY / AJAX

我的JQuery / Ajax / Controller与与数据库进行对话的控制器进行对话,并基于名称/电子邮件(前提是它返回数据)并要求我的JavaScript函数创建新行。

    $('#search').click(function () {
    $.ajax({
        type: "Post",
        url: "/Home/PolicyID_get",
        dataType: 'json',
        data: {
            Firstname: $('#firstname').val(),
            Lastname: $('#lastname').val(),
            Email: $('#email').val(),
        },
        success: function (data) {

            $.each(data, function (i, result) {
                addRowsPolicyHolder("policyTable", result.Policyid, result.PolicyStatus, result.PolicyExpirationDate, result.Agencycode, null);

            });

        }
    });
});

JavaScript 我的JS检查是否存在行ID号(例如是否存在第一行等),然后根据该行号创建新的行号。下面的代码仅显示如何制作单选按钮和策略ID,但表行的其余部分在我的代码中。

function addRowsPolicyHolder(tableId, policyId, policyStatus, policyExp, certifyingAgency, agencyCertId) {
var iteration = 0;
var stop = false;

while (stop == false) {
    var elementChk = "[" + iteration + "].policyID";
    var checkId = document.getElementById(elementChk);
    if (checkId) {
        stop = false;
    } else {

        var table = document.getElementById(tableId);

        var rowCount = table.rows.length;
        var row = table.insertRow(rowCount);

        var cell0 = row.insertCell(0);
        var element0 = document.createElement("input");
        var element0Label = document.createElement("label");
        var element0Span = document.createElement("span");
        element0Label.className = "radioContainer";
        element0Span.className = "checkmark";
        element0.type = "radio";
        element0.id = "[" + iteration + "].chkbox";
        element0.name = "policyCheckBox";
        element0Label.appendChild(element0);
        element0Label.appendChild(element0Span);
        cell0.appendChild(element0Label);

        var cell1 = row.insertCell(1);
        var element1 = document.createElement("input");
        element1.type = "text";
        element1.id = "[" + iteration + "].policyID";
        element1.name = "[" + iteration + "].policyID";
        element1.className = "form-control";
        element1.disabled = true;
        element1.value = policyId;
        cell1.appendChild(element1);

但是,我们设置了控制器来返回客户列表,而不仅仅是返回第一个结果,因为客户可以有多个策略。如果返回多个策略,将返回多行。另外,假设某人与配偶一起来,我们搜索了他们的信息,但他们也想看看自己的配偶是否有更好的政策。我们可以搜索多个人,并且将显示多个策略。

所有这些都正常。我只是想不通如何仅将已检查的行发送到模型。

我找到了一些使用razor语法的解决方案,但是由于我是动态创建行的,因此无法正常工作。在此先感谢!

0 个答案:

没有答案