2016-02-20 82 views
1

我有下面的代码 -C#asp.net mvc的 - 从调用html.actionlink脚本功能与参数

@model MyFirstProject.Models.Product 

<script type="text/javascript"> 
    function AtC(prodid) { 
     var url = "/Shopping/AddToCart/"; 
     $.post(url, { pID: prodid }); 
    } 
</script> 

<table style="background-color:gray; padding:20px;"> 
    <tr> 
     <td> 
      <h3 align="center">@Model.Title</h3> 
      <p align="center" style="color:white">@[email protected]@Model.UploadDate.Year</p> 
      <p align="center">@Model.ShortDescription</p> 
     </td>   
    </tr> 
    <tr> 
     <td>@Html.ActionLink("Add to cart", "Index", "Shopping", null, new {onclick = "AtC()", @style="color: White;" })</td> 
     <td>@Html.ActionLink("Show product details", "ProductDetails", new {pID = Model.ProductID}, new { @style = "color: White;" })</td> 
    </tr> 
</table> 

我需要发送到ATC功能的INT:Model.ProductID。我试过几种方法来解决它,但没有任何工作。请帮忙,因为我不知道该怎么办。

更新 感谢pλul'这正是我所需要的! 我的问题解决了!

+0

尝试写javascript:AtC();而不是“索引”,“购物”。让我快速编辑它:现在发生的事情是你要链接而不是激活一个JavaScript函数(你正在做这两件事),并且这个页面移动会干扰你正在运行的功能 – misha130

+1

这会起作用:new {onclick =“AtC (“+ @ Model.ProductID +”)“ 尽管使用ActionLink没有任何意义,因为除了添加onclick处理程序外,您没有对ActionLink执行任何操作 –

回答

0

这应该工作。

@Html.ActionLink("Add to cart", "Index", "Shopping", null, 
        new { onclick = "AtC("+Model.ProductID+")", @style = "color: red;" }) 

我个人更喜欢做非侵入式JavaScript,使我的标记不会有JavaScript方法的任何直接调用。为此,我们将在链接中添加一个ID。

由于您正在发布到Shopping/AddToCart方法,因此您可以在构建操作链接时使用这两个方法。

@Html.ActionLink("Add to cart", "AddToCart", "Shopping", new {@id=Model.ProductID}, 
              new { @id="addToCart", style = "color: green;" }) 

现在在javascript听ID为“addToCart”定位标记的点击事件,做你的Ajax后

$(function(){ 

    $("a#addToCart").click(function(e){ 
     e.preventDefault(); 
     $.post($(this).attr("href"),function(response){ 
      console.log(response); 
     });  
    }); 

}); 

如果要发送更多的信息,你可以保留那些为在您的链接HTML5数据属性和使用,根据需要

@Html.ActionLink("Add to cart", "AddToCart", "Shopping", new { @id = Model.ProductID}, 
        new { @id = "addToCart",data_size="large", style = "color: green;" }) 

而且在你的JavaScript可以读取这些信息,

$("a#addToCart").click(function(e){ 
    e.preventDefault(); 

    var d = { Size : $(this).data("size"); 
    $.post($(this).attr("href"),d,function(response){ 
      console.log(response); 
    });  
});