将隐藏字段的值传递给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;
});
当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 })'" />