2016-11-02 38 views
0

我需要將ID傳遞給我的控制器,但我不知道如何使用我編寫的代碼來完成此操作。將錨值傳遞給控制器​​

這是我CSHTML文件:

<script> 
    $(document).on("click", "#getDetails", function (e) { 
     $.ajax({ 
       url: '/Home/GetDetails', 
       contentType: 'application/html; charset=utf-8', 
       type: 'POST', 
       dataType: 'html' 
      }) 
      .success(function(result) { 
       $('#detailsPlace').html(result); 
      }) 
      .error(function(xhr, status) { 
       alert(status); 
      }); 
    }) 
</script> 

<table class="table"> 
    @foreach (var item in Model) 
    { 
     <tr> 
      <td> 
       @*<input type="hidden" value="@item.Id" name="partId"/>*@ 
       <a href="javascript:void(0)" value="@item.Id" id="getDetails">@Html.DisplayFor(modelItem => item.Description)</a> 
      </td> 
     </tr> 
    } 
</table> 

<div id="detailsPlace"></div> 

這裏是我的控制器:

[HttpGet] 
public ActionResult Index() 
{ 
    var response = _test.GetParts("A"); 
    return View(response); 
} 

public ActionResult GetDetails() 
{ 
    return PartialView(); 
} 

我只是想從

<a href="javascript:void(0)" value="@item.Id" id="getDetails">@Html.DisplayFor(modelItem => item.Description)</a> 

到我GetDetails(傳遞值)控制器方法。

回答

0

錨沒有「價值」。

因此,您應該做的第一件事可能就是將該值存儲在數據屬性中。喜歡的東西:

<a href="javascript:void(0)" data-value="@item.Id" id="getDetails"> 

然後在你的AJAX調用,你可以從數據屬性獲取它,並將它傳遞給服務器。喜歡的東西:

$.ajax({ 
    url: '/Home/GetDetails', 
    contentType: 'application/html; charset=utf-8', 
    type: 'POST', 
    data: 'myValue=' + $('#getDetails').data('value') 
    dataType: 'html' 
}) 

並在控制器動作,您可以預期myValue值。例如:

public ActionResult GetDetails(string myValue) 

您可以使用任何名稱和數據類型在整個過程中都適用,這些只是示例。當然,還有其他方法可以做到這一點。但只需發佈一個像這樣的單個鍵/值對就可以工作。


注:看起來你正在使用一個靜態的HTML id在一個循環。如果多個元素具有相同的id,那麼您的HTML無效,並且該HTML上的JavaScript行爲未定義。 id值在HTML中應該是唯一的。

您可能更適合切換到class。例如:

<a href="javascript:void(0)" data-value="@item.Id" class="getDetails"> 

當然,您必須相應地調整您的選擇器(JavaScript,CSS等)。並獲得所單擊可能並不需要在所有選擇的元素的值,這可以很好的工作:

$(this).data('value') 

有可能也可以由其它化,更具語義改進,如用一個按鈕而不是錨,因爲這不是真的是表現爲錨。

+0

它仍然沒有超過價值,我只是把它作爲一個按鈕? –

+0

我只是嘗試了它使用一個按鈕,並使用value屬性,它仍然沒有工作 –

+0

@LukeRayner:嗯,將元素從'a'改爲'button'不是一個魔術棒。您可能需要/需要對代碼進行其他更改以適應該更改。至於這個「不工作」,你能更具體嗎?你做了什麼確切的改變?當你調試這個時,它在哪裏/具體是否失敗? – David