请参阅以下代码:
@{
var propertyList = new List<Tuple<string, string>>();
}
<input type="text" data-id="@item.Item1" class="form-control prop"/>
<a class="btn btn-default" id="run-report" href="@Url.Action("RunReport", "Reports", new {reportId = Model.ReportId, propList = propertyList})"> Run Report</a>
<script>
$("#run-report").click(function () {
$(".prop").each(function () {
var currentProp = $(this).attr("data-id");
var currentPropVal = (this).value;
@{
propertyList.Add(new Tuple<string, string>("", ""));
}
});
});
</script>
如上所示,我有一个名为propertyList
的全局变量,其中包含元组列表<string, string>
。
我在此声明这一点,因为我需要使用Url.Action
从控制器操作直接将报告下载到浏览器。
当我从文本框中获取值时,我遇到了一些问题。我需要将我的jQuery中的值添加到我的全局元组列表中。
看起来我不能这样做。
非常感谢任何建议!
由于
答案 0 :(得分:1)
请记住,@{}
代码在服务器端运行,因此在它到达浏览器之前。一旦它'#34;呈现&#34;在浏览器中,它好像是纯文本,无法更改。
您可以通过在脚本中构建参数来传递参数,例如:
从Url.Action参数中删除参数
<input type="text" data-id="@item.Item1" class="form-control prop"/>
<a class="btn btn-default" id="run-report" href="@Url.Action("RunReport", "Reports", new {reportId = Model.ReportId})"> Run Report</a>
通过脚本添加它们
$("#run-report").click(function () {
var url = $(this).attr("href");
$(".prop").each(function () {
var currentProp = $(this).data("id");
var currentPropVal = (this).value;
url += "?" + currentProp + "=" + currentPropVal;
});
location.href = url;
});
根据您的操作所需的格式,您可能需要更改网址的构建方式,但这显示了原则。