2016-02-20 81 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); 
    });  
});