2015-05-24 62 views
0
@foreach (var item in Model.policydata) 
{ 

<tr align="center"> 
<td> 
@Html.DisplayFor(modelitem => item.Name) 
</td> 
<td> 
@Html.DisplayFor(modelitem => item.PolicyID) 
</td> 
<td> 
@Html.DisplayFor(modelitem => item.CustomerID) 
</td> 
<td>    
<a onclick="OpenRepositoryFile()" href="@string.Format("http://repository.website.com/{0}/{1}.pdf", Model.PolicyName, item.CustomerID)">View</a>  
</td> 
</tr> 
} 


</table> 
<script> 

    function OpenRepositoryFile() 
    { 

     var win = window.open('', '_blank'); 
     if(win) 
     { 
      //Browser has allowed it to be opened 
      win.focus(); 
     }else{ 
      //Broswer has blocked it 
      alert('This application feature requires Popups Enabled. Please right click to open in a new Tab or change your Browser settings'); 
     } 
    } 
</script> 

我已获得此剃刀代码和此Javascript函数。基本上,Razor链接是根据从模型变量中检索的数据构建的,Javascript功能打开一个新的窗口/选项卡(取决于设置),或者在浏览器设置不允许弹出窗口时提醒用户。单独使用时,两者都可以正常工作。在Javascript函数中包含剃刀格式的字符串

继承人的问题。我希望Razor建立的链接作为Javascript函数的window.open命令中的一个参数。

我想象,在Javascript或JQuery的,会有的String.Format()函数,因为在净的,但现在,没有..

是否存在的一种方式获取Razor在其标识中通过其ID生成的Href字符串属性?或有关于此的任何其他建议?

感谢

回答

2

你可以用jQuery做到这一点很容易,只有你需要通过jQuery绑定一个带有这个锚标签的事件,就像下面这样:

HTML

<a id="ancWindow" 
    href="@string.Format("http://repository.website.com/{0}/{1}.pdf", Model.PolicyName, item.CustomerID)">View</a> 

jQuery的

$(document).ready(function() { 
    $('#ancWindow').click(function(e) { 
     e.preventDefault(); // <- used to prevent redirection from anchor 
     var win = window.open(this.href, '_blank'); 
     if(win) { 
      //Browser has allowed it to be opened 
      win.focus(); 
     } else{ 
      //Broswer has blocked it 
      alert('This application feature requires Popups Enabled. Please right click to open in a new Tab or change your Browser settings'); 
     } 
    }); 
}); 

注:请确保您有jQuery的文件的参考。

+0

辉煌的代码。看着jquery,但我的代码知识缺乏这个部门,确实需要改进......但是有一个问题。该功能可以正常工作并打开,但即使该选项卡打开,警报也会弹出。这与浏览器设置有关吗?或者可以对代码做进一步的工作?非常感谢迄今为止... –

0

据我了解的hrefonclick在一起是不兼容的,因为它们都做同样的事情。

要创建参数把它看成是一个字符串

@{ 
    String tempString = string.Format("http://repository.website.com/{0}/{1}.pdf", Model.PolicyName, item.CustomerID)" 
} 

然后你的电话就变成了:

OpenRepositoryFile(@(tempString)) 

警告 - 没有测试