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

从下拉框取参数并结合模型值传递至控制器的实现问题

嘿,别着急,我来帮你一步步解决这个问题!作为新手遇到这种参数传递的坑很正常,咱们先理清楚问题根源,再给出可行的解决方案。

首先说为啥你的ActionLink方案不行

你可能没注意到:Html.ActionLink是服务器端生成的URL,页面加载完成后这个URL就固定死了。下拉框的选中值是用户在页面加载后动态选择的,ActionLink根本没法实时获取这个客户端的动态值,所以点击它的时候传过去的GroupName要么是页面加载时的默认值,要么就是null——这就是问题所在!所以这种场景下,用Ajax来处理动态参数传递才是正确的选择。

接下来解决Ajax的参数问题(获取SamAccountName)

核心思路是把每一行的r.Sam值存在页面元素的自定义属性里,点击按钮时再从这个属性里取出来,同时获取下拉框的选中值,一起传给控制器。

第一步:修改表格行的按钮代码

把原来的ActionLink换成一个带data-sam属性的按钮(或者链接),把当前行的SamAccountName存进去:

@foreach (var r in Model) {
    <!-- 其他表格列代码 -->
    <td>
        <button class="remove-user-btn" data-sam="@r.Sam">Remove</button>
    </td>
}

第二步:修改你的Ajax函数

不用再手动传id参数,而是通过点击的按钮获取data-sam的值,同时修正datatype的拼写(应该是驼峰的dataType):

// 给所有移除按钮绑定点击事件
$(document).on('click', '.remove-user-btn', function() {
    // 从按钮的data属性里拿到当前行的SamAccountName
    var samAccountName = $(this).data('sam');
    // 获取下拉框选中的组名
    var selectedGroupName = $('#dllGroups').val();

    $.ajax({
        type: "GET",
        url: "/Home/Remove",
        data: {
            id: samAccountName,
            GroupName: selectedGroupName
        },
        dataType: "HTML",
        success: function(data) {
            // 成功后的逻辑,比如提示用户或者刷新表格
            alert('用户已成功移出指定组!');
        },
        error: function(data, status, error) {
            // 失败提示
            alert('操作失败:' + error);
        }
    });
});

第三步:控制器方法保持不变

你的控制器方法已经是正确的,直接用就行:

public ActionResult Remove(string id, string GroupName)
{
    // 这里写你的Active Directory移除逻辑:
    // id就是SamAccountName,GroupName是下拉框选中的组名
    // ...

    return View(); // 或者根据需求返回PartialView/Json结果
}

新手调试小技巧

可以按F12打开浏览器的开发者工具,切换到「Network」标签,点击移除按钮后查看Ajax请求的参数,确认id和GroupName是不是正确传递了——这能帮你快速定位问题!

内容的提问来源于stack exchange,提问作者Larry L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:02:35