Asp.net MVC表单提交时怎么传递表格内选择的行号?

标签: Asp.net-MVC
发布时间: 2017/12/29 16:12:34
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

这里是Model:

public class TestModel
{
    public string Data { get; set; }
    public List<string> Datas { get; set; }
}

这里是视图:

@model InventoryWeb.Models.TestModel

@using (Html.BeginForm())
{
    @Html.DisplayFor(modelItem => Model.Data)
    @Html.HiddenFor(m => m.Data)

    <table class="table">
        <tr>
            <th>
                Data
            </th>
            <th></th>
        </tr>
        @for (int i = 0; i < Model.Datas.Count; i++)
        {
            @Html.Hidden("Datas["+ i + "]", Model.Datas[i])
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => Model.Datas[i])
                </td>
                <td>
                    <input type="submit" value="Submit" formaction="SubmitTest" formmethod="post"/>
                </td>
            </tr>
        }
    </table>
}

我现在想获得表单提交时,用户所选择行的行号,怎么解决?

解决方法 1:

首先,你可以在每一行都插入Form表单:

@model InventoryWeb.Models.TestModel

@Html.DisplayFor(modelItem => Model.Data)

<table class="table">
    <tr>
        <th>
            Data
        </th>
        <th></th>
    </tr>
    @for (int i = 0; i < Model.Datas.Count; i++)
    {

        <tr>
            <td>
                @Html.DisplayFor(modelItem => Model.Datas[i])
            </td>
            <td>
    @using (Html.BeginForm())
    {
        @Html.Hidden("rowNumber", i)
                <input type="submit" value="Submit" formaction="SubmitTest" formmethod="post"/>
    }
            </td>
        </tr>
    }
</table>

其次,就是用JavaScript来实现该功能:

@using (Html.BeginForm("SubmitTest"))
{
    @Html.DisplayFor(modelItem => Model.Data)
    @Html.HiddenFor(m => m.Data)
    <input type="hidden" id="rowNumber" name="rowNumber" />

    <table class="table">
        <tr>
            <th>
                Data
            </th>
            <th></th>
        </tr>
        @for (int i = 0; i < Model.Datas.Count; i++)
        {
            @Html.Hidden("Datas["+ i + "]", Model.Datas[i])
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => Model.Datas[i])
                </td>
                <td>
                    <input type="button" value="Submit" onclick="SubmitForm(@i, this);"/>
                </td>
            </tr>
        }
    </table>
}

<script>
function SubmitForm(i, btn){
    $("#rowNumber").val(i);
    var form = $(btn).closest("form");
    form.submit();
}
</script>


赞助商