You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC中select下拉框的asp路由属性不生效如何解决?

问题根本原因

ASP.NET Core 内置的 Tag Helper 仅对 <a>、<form>、<button> 等特定标签支持 asp-controller、asp-action 这类路由相关属性,直接写在 <option> 标签上的这类属性不会被解析处理,渲染到浏览器端后这些属性会被直接忽略,自然无法触发跳转。
之前你把select放到form里依旧无效,是因为没有配置form和select的对应参数关联,提交时识别不到要传递的路由值。

解决方案1:无需form,前端监听跳转

先通过 Url.Action 生成每个选项对应的跳转地址存入value,监听select的change事件触发跳转即可:

<select id="categorySelect">
    <option value="@Url.Action("Catalog", "Home", new { id = 1 })">Fish</option>
    <option value="@Url.Action("Catalog", "Home", new { id = 2 })">Rodent</option>
</select>

<script>
document.getElementById('categorySelect').addEventListener('change', function() {
    if (this.value) window.location.href = this.value;
});
</script>

解决方案2:Form提交实现

如果要通过表单提交实现,将路由属性配置在form标签上,给select设置name为对应的路由参数名id即可:

<form asp-controller="Home" asp-action="Catalog" method="get">
    <select name="id">
        <option value="1">Fish</option>
        <option value="2">Rodent</option>
    </select>
    <button type="submit">切换分类</button>
</form>

提交后会自动拼接参数为 /Home/Catalog?id=选中值,符合你的路由要求。

内容的提问来源于stack exchange,提问作者meitar edri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:06:04