【问题标题】:How to get value as parameter with multiple same input names?如何将值作为具有多个相同输入名称的参数?
【发布时间】:2021-09-06 04:28:54
【问题描述】:

所以我有一个列表,我在其中循环并创建表格行。

 @if (Model.TbAuctions != null && Model.TbAuctions.Count > 0)
            {
                foreach (var item in Model.TbAuctions)
                {
                    <tr>
                        <td>
                            <img src="~/images/ebayonly.gif" />
                        </td>
                        <td>
                            @{
                                <form asp-page="GetSellerListModel" method="post" data-ajax="true" data-ajax-method="post" data-ajax-begin="begin" data-ajax-complete="complete" data-ajax-failure="failed">
                                    <input type="hidden" value="@item.AuctionId" name="auctionId" />
                                    <input id="submitBtn" style="display:none;" type="submit">
                                    <a href="javascript:;" class="myClass" onclick="$('#submitBtn').click();">@Html.DisplayFor(modelItem => item.AuctionId)</a>
                                </form>
                            }

                        </td>
                    </tr>
                }
            }

代码背后:

public async Task<IActionResult> OnPostAsync(string auctionId)
    {
        try
        {
            if (ModelState.IsValid)
            {
                var itemId = auctionId;
            }
        }
        catch (Exception ex)
        {
            
            throw ex;
        }

        return Page();
    }

我有一个输入隐藏字段,其中保存了 AuctionId 的值,因此当我单击 a href 时,它会通过 javascript 单击另一个输入,并将 AuctionId 值作为 Post 方法中的参数发送。到目前为止一切正常,但是由于输入的名称始终相同,因此无论您单击何处,它始终采用第一个输入值。我可以在这里做什么,这样我就可以得到我点击的输入的确切值?

附:我通过

【问题讨论】:

    标签: html .net asp.net-core model-view-controller razor


    【解决方案1】:

    您有多个 id 为 submitBtn 的输入,您需要使 id 唯一,以便您可以单击所需的按钮。您可以这样做:

    @{ var i = 0;}
    @foreach (var item in Model.TbAuctions)
    {
        <tr>
            <td>
                <img src="~/images/ebayonly.gif" />
            </td>
            <td>
                @{
                    <form asp-page="GetSellerListModel" method="post" data-ajax="true" data-ajax-method="post" data-ajax-begin="begin" data-ajax-complete="complete" data-ajax-failure="failed">
                        <input type="hidden" value="@item.AuctionId" name="auctionId" />
                        <input id="submitBtn@(i)" style="display:none;" type="submit">
                        <a href="javascript:;" class="myClass" onclick="$('#submitBtn@(i)').click();">@Html.DisplayFor(modelItem => item.AuctionId)</a>
                    </form>
                    i++;
                }
    
            </td>
        </tr>
    }
    

    【讨论】:

    • 感谢您的回答。直到以后我才能检查它,但只是为了澄清一下,我认为问题是我在 for 循环中创建的名为“auctionId”的第一个输入,结果是将创建几个输入同名,所以 onPost 任务参数总是得到第一个。无论如何,我会检查您的解决方案并回到这里。再次感谢。
    • 刚刚测试过,它工作正常。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 2010-10-03
    • 1970-01-01
    • 2018-02-22
    • 2016-02-04
    相关资源
    最近更新 更多