我正在使用VS2010,MVC3
我有以下jquery脚本,点击一个按钮,在控制器流中有一个ActionResult,将页面的pdf版本改为一个新窗口。
但是,这是发生的事情:
首次呈现页面时,我收到警报:“in hereb1”和actionUrl的正确url值。
我第一次点击按钮时,会收到“in hereb2”和“undefined”的警报作为url的值,并打开一个新窗口,显示未定义资源的错误。
第三次单击按钮,我收到“hereb2”中的警报和正确的url值(与actionUrl相同的值),并打开一个带有预期结果的新窗口。没有错误。
为什么第一次点击无法访问actionUrl的正确值?
<script type="text/javascript">
$(document).ready(function () {
alert("in hereb1");
var actionUrl = '@MvcHtmlString.Create(Html.BuildUrlFromExpressionForAreas<MyController>(c => c.GeneratePdf(Request.Url.ToString())))';
alert(actionUrl);
$("#btnPdf").click(function () {
var url = $(this).attr("href");
$(this).attr("href", actionUrl);
alert("in hereb2");
alert(url);
var win = window.open(url, "PdfVersion");
win.focus();
return false;
});
});
</script>
由于
答案 0 :(得分:0)
如果您尝试在新标签/窗口中打开actionUrl
,则以下代码可能会有所帮助
$("#btnPdf").click(function () {
//var url = $(this).attr("href");
$(this).attr("href", actionUrl);
alert("in hereb2");
alert(actionUrl);
var win = window.open(actionUrl, "PdfVersion");
win.focus();
return false;
});
您的代码所做的是获取btnPdf
的网址并在新窗口/标签中打开网址,并将href
的{{1}}属性设置为{{ 1}}如果您尝试这样做,请确保已设置btnPdf
的属性actionUrl
alredy已设置的页面。
答案 1 :(得分:0)
切换
var url = $(this).attr("href");
$(this).attr("href", actionUrl);
到
$(this).attr("href", actionUrl);
var url = $(this).attr("href");