2010-09-16 3 views
1

Когда я редактирую одиночную запись на странице, я использую флажок, чтобы получить выбранную строку не каждая строка с элементом actionlink, но, похоже, я не могу сделать так, чтобы это произошло через вызов javascript-кода (функция GetSelectedRow() должна вернуть id). Может у кого-нибудь хорошая идея?ASP.NET MVC: как вызвать функцию javascript в 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> 

ответ

0

Смешанный сервер и клиент таким образом не будут работать. То, что вам нужно сделать, когда выбрана строка, - это манипулировать URL-адресом. Таким образом, вместо того, чтобы вернуть в URL, есть GetSelectedRow сделать:

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(); 
} 

Вы должны изменить его с клиентской стороны Javascript является ключом, а не делать это во время процесса рендеринга.

HTH.

3

Вы могли бы сделать что-то вроде этого:

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

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

Попробуйте это -

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

Вызов функции сценария Java по идентификатору 'GetSelectedRow'. Вместо вызова функции по идентификатору вы можете напрямую вызвать функцию

<% Html.ActionLink("Edit", "Edit", "Controller", new { onclick = "GetSelectedRow();"}) %> 
Смежные вопросы