2015-12-08 18 views
0

我有一個Url動作鏈接發送到我的控制器1參數,但我需要該參數調用JavaScript函數來獲取document.getElementById並將該值發送到我的控制器。在我看來,我都有以下代碼:Url.Action調用Javascript函數

@foreach (var item in ViewBag.PersonsContacts as List<Software___FPPD.Models.Contact>) 
{ 
    <tr> 
     <td>@Html.DisplayFor(model => item.ContactType.Name)</td> 
     <td>@Html.EditorFor(model => item.ContactValue, new { htmlAttributes = new { @class = "form-control", id = "contactValue"} })</td> 
     <td> 
      <a href="@Url.Action("EditPersonContact", "Person", new { contactValue = getValue(item.ContactValue)})" class="btn btn-success">Alterar</a> 
     </td> 
    </tr> 
} 

我的javascript:

function getValue(contactValue) { 
    document.getElementById("contactValue").value = contactValue; 
} 

什麼,我哪裏做錯了,因爲我不能得到這個工作。

+0

可能會更容易使用for循環,不是的foreach,並與索引引用的項目。然後每個ID將是唯一的。而contactValue可以等於PersonsContacts [x] .ContactValue。 –

+0

我需要爲此使用JavaScript。我正在使用一個有多模型的視圖模型。這部分代碼是更改我的聯繫人表中某個人的值。 – Francisco

回答

0

Url.Action是一種通過剃鬚刀在服務器中執行並且您的JavaScript在客戶端執行的方法。所以混合兩者並不那麼容易。

我不確定你在做什麼。在你提到的問題中,你提到你想爲某些表單域設置值。但是既然你將被重定向到新的頁面,這沒有意義!無論你設置的值是什麼都沒有了(除非你在新標籤中打開新頁面)

無論如何,你可以做的就是在你的javascript中監聽錨點標記的click事件,並在你想做的任何事情客戶端(例如:設置一些表單字段值/執行一個JavaScript函數等)。

你在你的視圖代碼有一些問題,你是在@Html.EditorFor(model => item.ContactValue .Duplicate ID的循環創造了每個項目的相同ID值是無效的。所以避免這一點。

<td> 
    @Html.EditorFor(model => item.ContactValue, 
        new { htmlAttributes = new { @class = "form-control myContactVal"} }) 
</td> 
<td> 
    <a href="@Url.Action("SignUp", "Home")" data-contactvalue="@item.ContactValue" 
              class="btn btn-success myEdit"> Alterar</a> 
</td> 

我加了2個新的CSS類,myContactValmyEdit的表單字段來幫助我們實現我們的jQuery選擇。我們將html5數據屬性中的item.ContactValue值設置爲稍後在javascript代碼中訪問的錨標籤。

和JavaScript來處理鏈接點擊事件

$(function() { 

    $("a.myEdit").click(function (e) { 

     e.preventDefault(); 
     _this = $(this); 
     var contactVal = _this.data("contactvalue"); 
     var url = _this.attr("href"); 
     url = url + "?contactValue=" + contactVal; 
     alert(url); 

     //You can do any other thing here. 

     //If you want to update the field with myContactVal class in prev td 
     _this.closest("tr").find(".myContactVal").val(contactVal); 


     // finally do the redirect 
     window.location.href=url; 

    }) 

}) 
+0

嗨,我試圖做的是以下。我有一個人可能有多個聯繫人。當我想編輯該人員時,我在編輯視圖中列出了所有聯繫人的列表。在每個聯繫人前面,我有一個按鈕,當我們更改聯繫人值時,我們按下該按鈕,ideia將向我的控制器發送聯繫人類型,它的值和人員ID並更新我的聯繫人表。 – Francisco

+0

您可以將所有這些設置爲鏈接中的html5數據屬性,並使用javascript中的鏈接來構建url – Shyju

+0

您的Ideia很棒,但是當我更改聯繫人值時,它將發送到功能類型聯繫人,舊聯繫人值和人員ID。當我編寫一個新的聯繫人值發送該聯繫人值時,是否可以接收舊的聯繫人值?剩下的就是greate。完美 – Francisco