2017-06-22 106 views
0

我在我的MVC控制器中有一个方法,当调用下载文档时。是否有可能将动态值添加到@ Html.ActionLink参数

我有一个bootstrap模态,其中href驻留指向此方法。

@Html.ActionLink("Download", "Download", new { applicantId = 1, templateId = 1 }) 

的applicantId和templateId对于分钟是硬编码,但这些值是通过jQuery的文本值传递给模态。

是否可以动态获取HTML标识并将其添加到@ Html.ActionLink?

模态:

<div id="template1"> 
    <div class="modal fade" id="myModal1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 
     <h3 id="app" style="display:none"></h3> 
     <div class="modal-dialog" role="document"> 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <h4 class="modal-title" id="myModalLabel">Letter Template Logo</h4> 
       </div> 
       <div class="modal-body"> 
        <img style="background-size:cover;" src="~/Content/images/image.png" alt="" /> 
       </div> 
       <div class="modal-footer"> 
       ActionLink("Download", "Download", new { applicantId = 1, templateId = 1 }) 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
+1

其真不明白你问这里。 '@ H​​tml.ActionLink()'是剃须刀代码,并且在发送到视图之前在服务器上解析,所以如果您想根据客户端中可用的数据更改生成的'href'属性,那么您需要javascript。而且你不能使用ajax来下载文件。您需要重定向到该方法。 –

+0

@StephenMuecke发布后,我读了不能通过ajax做到这一点。我问,我可以将传递给模态的值绑定到html.actionlink参数吗? – Haris

+0

您需要使用javascript/jquery来更改'href'属性。或者,取消默认操作并构建自己的url并使用'location.href'重定向并下载文件。 (当你没有显示控制器方法或者指出'applicantId'和'templateId'的值来自哪里时,很难给出答案) –

回答

1

我创建.NetFiddle。它的工作原理here

您可以使用.replace()方法更改Html.ActionLink()方法参数,您可以像下面那样执行。

// HTML

Parameter 1:<input id="param1" /> 
Parameter 2:<input id="param2" /> 

<div class="modal-footer"> 
    @Html.ActionLink("Download", "Example", new { applicantId = 1, templateId = 1 }) 
</div> 

<button id="yourbutton">Change Action Link</button> 

// jQuery的

<script type="text/javascript">   
$("#yourbutton").on("click",function(){ 

    var param1 = $("#param1").val(); 
    var param2 = $("#param2").val(); 
    console.log(param1); 
    console.log(param2); 

    var link = '@Html.ActionLink("Download", "Example", 
        new { applicantId = "_applicantId_", templateId = "_templateId_"})'; 
    if(param1 == "" || param2 == "") 
    { 
     alert("please fill all parameter inputs") 
    } 
    else 
    { 
     link = link.replace('_applicantId_', param1); 
     link = link.replace('_templateId_', param2); 
     $(".modal-footer").html(link) 
     alert("I have changed ActionLink. Please click the download link") 

    } 
}) 
</script> 
+0

谢谢,我确实设法做到底。我喜欢你的解决方案。所以将投票:) – Haris

+0

您的欢迎:)如果此解决方案适用于您的问题,请考虑接受答案,以帮助人们了解它已被解决:) – hasan

+0

尝试这实际上,它只附加链接作为文本模态页脚 – Haris

0
@Html.ActionLink("Pond", "Pond", "Home", htmlAttributes: new { 
@class="classNameYouWantToAdd" }) 

@Html.ActionLink("Pond", "Pond", "Home", new { 
@class="classNameYouWantToAdd" }) 

,如果你想从JQuery的去做,那么你可以针对包含链接的L1标签或添加类名称添加到上面的动作链接,然后像通常那样更新对象的类。

$('.TargetedClassNameOfActionLink').addClass('addDifferentClass').removeClass('removeSomeOtherClass') 





$('#liTagId').find('.ClassNameOfActionLink').addClass('addDifferentClass').removeClass('removeSomeOtherClass') 

$('#tabPond').addClass("greenTab"); 
+0

这不是我要求的.... – Haris

相关问题