如何使用Option标签中的ActionLink向控制器发送参数

How to use Action Link in Option tag to send parameters to the controller

我正在使用 Select 标签,我有 foreach 将值添加到列表中,但我必须调用更新控制器并使用 [=13= 向它传递 2 个参数].我试图这样做,但它不起作用。我想知道我做错了什么?

<form action="Update " method="get" class="select-menu">
<select id="sectionId"
        name="sectionId"
        class="selectpicker"
        title="Section"
        data-width="100%"
        data-live-search="true"
        onchange="this.form.submit()">

       @foreach (var item in Model)
       {
           <option value="@item.Text" data-url="@Html.ActionLink(item.Text, "UpdateBoard", new { subSectionID = item.Value, subsectionName = item.Text })"></option>
       }
  </select>
</form>

查询应该是这样的http://localhost:60082/Update?subSectionID=27&subsectionName=Something

谢谢!

以上述方式在 form 中使用 select 标签将无法正常工作,因为 form 没有额外的路由参数(subSectionIDsubsectionName)。结果,Update 操作方法将接收 subSectionIDsubsectionName 参数作为 null.

因此,要根据选择动态设置这些参数,请尝试以下操作:

<script type="text/javascript">

    $('#sectionId').change(function () {
        var url = $(this).val();
        if (url != null && url != '') {
            window.location.href = url;
        }
    })

</script>

<select id="sectionId"
        name="sectionId"
        class="selectpicker"
        title="Section"
        data-width="100%"
        data-live-search="true">

    @foreach (var item in Model)
    {
        <option value="@Url.Action("SetLanguage", new { subSectionID = item.Value, subsectionName = item.Text })">@item.Text</option>
    }
</select>

foreach 中使用 Url.Action 助手而不是 Html.ActionLinkUrl.Action 助手通过使用指定的操作名称和路由值为操作方法生成完全限定的 URL。

但是 Html.ActionLink returns 指定 link 文本的锚元素,当将此操作传递到服务器端时,这可能会导致其他问题。