2010-09-16 4 views
1

Lorsque je modifie une seule page recored dans la page, j'utilise case à cocher pour obtenir une ligne sélectionnée pas chaque ligne avec un élément actionlink, mais il semblait que je ne peux pas faire de cette façon en appelant le code javascript (la fonction GetSelectedRow() devrait renvoyer un identifiant). Quelqu'un pourrait-il avoir une bonne idée?ASP.NET MVC: comment appeler la fonction javascript dans Html.ActionLink

<head runat="server"> 
    <title>Index</title> 
    <script type="text/javascript" language="javascript"> 
     function GetSelectedRow() { 
      var a = 0; 
      var chkBoxes = document.getElementsByName("chkSelect"); 
      var count = chkBoxes.length; 
      for (var i = 0; i < count; i++) { 
       if (chkBoxes[i].checked == true) 
        a = chkBoxes[i].primaryKeyID; 
      } 
      return a; 
     } 
    </script> 
</head> 
<body> 
    <div> 
     <span style="width:20%"> 
     <%: Html.ActionLink("Add", "Create")%> 
     </span> 
     <span> 
     <%: Html.ActionLink("Edit", "Edit", new { id = GetSelectedRow()) %> 
     </span> 
     <span> 
     <%: Html.ActionLink("Detial", "Details", new { id = GetSelectedRow() })%> 
     </span> 
     <span> 
     <%: Html.ActionLink("Delete", "Delete", new { id = GetSelectedRow()) %> 
     </span> 
    </div> 
    <table> 
     <tr> 
      <th></th> 
      <th> 
       CategoryID 
      </th> 
      <th> 
       CategoryName 
      </th> 
      <th> 
       Description 
      </th> 
     </tr> 
     <% foreach (var item in Model) { %> 
      <tr> 
      <td> 
      <%: Html.ActionLink("Details", "Details", new { id = item.AppCategoryID })%> 
      </td> 
       <td> 
        <%: Html.CheckBox("chkSelect", false, new { primaryKeyID = item.AppCategoryID })%> 
       </td> 
       <td> 
        <%: item.AppCategoryID %> 
       </td> 
       <td> 
        <%: item.AppCategoryName %> 
       </td> 
       <td> 
        <%: item.Description %> 
       </td> 
      </tr> 
     <% } %> 
    </table> 
</body> 

Répondre

0

Le mélange du serveur et du client de cette façon ne fonctionnera pas. Ce que vous devez faire, lorsqu'une ligne est sélectionnée, est de manipuler l'URL. Ainsi, plutôt que de retourner une URL, ont GetSelectedRow faire:

function GetSelectedRow() { 
    //existing logic minus return 

    var link1 = document.getElementById("Link1"); //this would require giving links an ID 
    link1.href = '<%= Url.Action("Detail", new { controller = "Details" }) %>' + 
    'id=' a.toString(); 
} 

Vous devez changer de côté client javascript est la clé, plutôt que de le faire au cours du processus de rendu.

HTH.

3

Vous pouvez faire quelque chose comme ceci:

<script type="text/javascript"> 
function RedirectUsingSelectedRow() { 
    var id = GetSelectedRow(); 
    window.location = '../Controller/Details/' + id; 
} 
</script> 

<a href="#" onclick = "RedirectUsingSelectedRow();">Edit</a> 
0

Essayez ceci -

$('#GetSelectedRow').click(function() { /* Your Code */ }); 

appel fonction java script par id 'GetSelectedRow'. Au lieu d'appeler la fonction par ID, vous pouvez appeler directement la fonction

<% Html.ActionLink("Edit", "Edit", "Controller", new { onclick = "GetSelectedRow();"}) %> 
Questions connexes