将隐藏字段的值传递给ActionLink,然后传递给Controller

本文关键字:然后 Controller ActionLink 隐藏 值传 字段 | 更新日期: 2023-09-27 18:02:25

我试图通过让用户为他们想要的报告选择复选框来动态设置StudentIds。当他们点击ActionLink时,我使用jQuery在一个隐藏字段中设置id的值。我需要动作链接从隐藏字段读取id。

在隐藏字段中设置值,但它们没有从actionLink传递给控制器。

我需要将reportid传递给控制器。

        @Html.ActionLink("PrintMed", "GetMedEdVerificationReport", "Student", new { studentIdList = Model.ReportIds }, new { @class = "button print_selected print_selectedMedEd disabled" })

        @Html.HiddenFor(model => model.ReportIds)
javascript

$('.print_selectedMedEd').bind('click', function () {
    var ids = getPrintIds();
    if (ids.length == 0) {
        return false;
    }
    $('#ReportIds').val(ids.toString());

    return true;
});

将隐藏字段的值传递给ActionLink,然后传递给Controller

当asp.net mvc渲染您的ActionLink时,它将生成一个带有模型参数的链接。如果你改变模型的值,它不会改变ActionLink生成的输出值。

鉴于此,您必须再次查看值,尝试生成一个没有参数的ACtionLink:

@Html.ActionLink("PrintMed", "GetMedEdVerificationReport", "Student", null, new { @class = "button print_selected print_selectedMedEd disabled" })

在javascript端,您可以尝试使用on方法绑定一个事件处理程序,并从事件参数调用preventDefault方法,例如:

$('.print_selectedMedEd').on('click', function (e) {
    e.preventDefault();
    var ids = getPrintIds();
    if (ids.length > 0) {
       $('#@Html.IdFor(model => model.ReportIds)').val(ids.toString());
       // make an url to redirect
       var url = $(this).prop("href") + "?studentIdList=" + ids.toString();
       // redirect using the generated url
       window.location.href = url;
    }
});

请记住使用Html.IdForm()来确保您有正确的特定属性id

这是因为@Html.ActionLink不使用隐藏字段来发出请求。动作链接呈现后,它变成<a href="/Student/GetMedEdVerificationReport/reportIds..."> PrintMed </a>因此,您需要修改锚标记上的HTML。

你应该使用Html。而不是Beginform,以便传递模型。

@using (Html.BeginForm("GetMedEdVerificationReport", "Student", FormMethod.Post, null))
    {
        @Html.HiddenFor(model => model.ReportIds)
        <input type="submit" value="PrintMed" />
    }
             @Html.HiddenFor(modelItem => item.OrderId)
            <td>
                <input type="button" value="Pickup" onclick="location.href='@Url.Action("Edit", "Assignment", new { ID = item.OrderId })'" />