我有一个asp动作,其中有多个参数需要传递给控制器。某些变量可以根据页面上的操作而更改,例如,我有一个日期选择器,因此用户可以选择他们想要的日期。
当他们更改日期时,该日期将另存为Javascript变量。
<script>
$('#pvHistoricalDates').on('change', '#date', function (ev, picker) {
date = $(this).find("option:selected").val();
});
</script>
无论如何,我是否有将这个变量值插入到以下asp动作中而无需创建URL的唯一方法。我知道该解决方案,但我很好奇能否直接将其作为变量插入。
<a asp-action="LoadData" asp-route-account="@Model.Account" asp-route-date="???">Button</a>
答案 0 :(得分:1)
剃刀视图中的标记助手在服务器上执行,其结果(HTML标记)将发送到浏览器,浏览器将呈现它。因此,此时,anhcor标签帮助程序已经生成了链接的href
属性值。
您可以做的是,使用JavaScript覆盖常规的链接单击行为,从页面中读取输入元素值,然后使用该值来构建新的URL并导航到该URL。
您可以为日期参数指定一个虚拟值。我还为锚标签赋予了Id
属性,我将在稍后将其用于jQuery选择器。
<a id="btn" asp-action="LoadData" asp-route-account="@Model.Account"
asp-route-date="dummyDate">Button</a>
以及您的JavaScript中(这里我使用的是jQuery,但是您可以在JavaScript中执行相同的操作)
$(function (){
$("#btn").click(function (e) {
// Stop the normal navigation
e.preventDefault();
//Build the new URL
var url = $(this).attr("href");
var date = $("#date").val();
url = url.replace("dummyDate", date);
//Navigate to the new URL
window.location.href = url;
});
});