2009-05-15 18 views
6

Trong ứng dụng ASP.NET MVC của tôi, tôi muốn người dùng thêm một giá trị vào một hộp văn bản và sau đó nhấn Ajax.ActionLink của tôi. Tôi muốn làm một cái gì đó như thế này:Làm cách nào để chuyển giá trị Textboxes cho Ajax.ActionLink của tôi?

Ajax.ActionLink ("Go", "Action", "điều khiển", mới {value = textbox1.value})

Hoặc làm thế nào khác tôi có thể nhận được giá trị trong khung này quay lại hành động của tôi? Jquery?

Trả lời

2

Bạn có thể chạy hành động sử dụng AJAX $.get phương pháp:

<script type="text/javascript">  

    $(document).ready(function() 
    { 
     $("#t").change(function() 
     { 
      RunAction(); 
     }); 

     RunAction(); 
    }); 

    function RunAction() 
    { 
     var action = '<%= Url.Action("Action", "Controller") %>'; 
     var data = $("#t").serialize(); 
     $.get(action, data); 
    } 

</script> 

<input type="text" id="t" /> 
+0

Điều đó gần như khiến tôi ở đó ... nhưng điều này không tạo ra một cuộc gọi AJAX, mà chỉ là một POST chuẩn. – Whozumommy

+0

Tôi đã thay đổi mã để thực hiện cuộc gọi AJAX. Trong trường hợp cần xem xét cũng tài liệu jQuery để tìm hiểu cách xử lý ActionResult trả về. –

+0

Trả lời cho câu hỏi này (http://stackoverflow.com/questions/458055/jquery-mvc-user-controls) cũng có thể hữu ích. –

1

đây là cách bạn lấy giá trị từ textbox của bạn trong JQuery

var input = $('input[name=txt_MyTextBox]').val() 
+0

Cảm ơn bạn, nhưng tôi đang cố gắng để có được dữ liệu mà lại sang mã máy chủ của tôi ... để tôi có nghĩa là tôi cần phải vượt qua các dữ liệu lại cho máy chủ thông qua JSON hoặc một số phương pháp khác. Tôi đang HOPING asp.net có một số phương pháp phức tạp để lấy dữ liệu mà không cần phải dựa vào javascipt. – Whozumommy

+0

Kể từ khi hộp văn bản và những gì có trong nó là ở phía khách hàng, bạn sẽ cần phải dựa vào kịch bản phía khách hàng để làm cho điều này xảy ra. Ngoại lệ là nếu thay vì thực hiện cuộc gọi Ajax, bạn gửi biểu mẫu, sau đó MVC xử lý nó ở phía máy chủ cho bạn. –

2

Thanks a lot Alexander! Cảm ơn bạn đã đưa tôi đi đúng hướng. Tôi đã không thử bạn mã mới nhất, nhưng tôi đã có thể nhận được mã trước của bạn làm việc. Đây là mã làm việc. Tôi chắc chắn đây là tất cả kludgy, nhưng có lẽ ai đó ra có thể chỉ cho tôi một giải pháp thanh lịch hơn:

  <script type="text/javascript"> 
       $(document).ready(function() { 
        $("#myVal").change(function() { 
         changeActionURL(); 
        }); 
        changeActionURL(); 
       }); 
      function changeActionURL() { 
       var url = '<%= new UrlHelper(ViewContext.RequestContext).Action("Action", "Controller") %>' + '?dup=' + $("#myVal").val(); 
       $("#u").attr('href', url); 
      } 
      </script> 

      <a id="u" href="" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'HellaYeah' });">Report Dupe</a> 

     </p> 
     <div id="response">not done</div> 

Giải pháp của tôi là bạn có thể thấy là chỉ để cứng mã LINK thay vì cố gắng sử dụng ASP. Lớp trình trợ giúp NET AJAX.

0

thay thế $ .get (hành động, dữ liệu); với $ ("# yourTargetId"). Tải (hành động, dữ liệu); bạn nhận được một ajax như trong những điều sau đây:

<script type="text/javascript">  

    $(document).ready(function() 
    { 
     $("#t").change(function() 
     { 
      RunAction(); 
     }); 

     RunAction(); 
    }); 

    function RunAction() 
    { 
     var action = '<%= Url.Action("Action", "Controller") %>'; 
     var data = $("#t").serialize(); 
     $("#yourTargetId").load(action, data); 
    } 

</script> 

<input type="text" id="t" /> 
Các vấn đề liên quan