2012-08-27 42 views
1

我试图通过一个表格值“客户ID”在MVC 4.使用Ajax.Actionlink谁能告诉我(i.e.dropdownlist选择的值),我在做什么错在这里?如何将选定的下拉列表值传递给MVC 4中的Ajax.ActionLink?

<div class="editor-label"> 
    @Html.LabelFor(model => model.CustomerID, "Customer Name") 
</div> 
<div class="editor-field"> 
    @Html.DropDownListFor(model => model.CustomerID, Model.CustomersList, "-- Select --") 
    @Html.ValidationMessageFor(model => model.CustomerID) 
</div> 

<div id="ApptsForSelectedDate"> 
    @Ajax.ActionLink("Click here to view appointments", 
        "AppointmentsList", 
        new {id = Model.CustomerID}, 
        new AjaxOptions 
        { 
         UpdateTargetId = "ApptsForSelectedDate", 
         HttpMethod = "GET", 
         InsertionMode = InsertionMode.Replace, 
         LoadingElementId = "progress" 
        } 
       )    
</div> 
<div id="progress"> 
    <img src="../../Images/ajax-loader.gif" alt="loader image" /> 
</div> 

我控制器的方法是这样的:

public PartialViewResult AppointmentsList(int id) 
{ ... } 

回答

3

您应该使用Ajax.BeginForm,把下拉表单内。这样该值将被自动传递。

不幸的是,因为你不能嵌套的HTML表单,如果你已经有了另一种形式的包装这个标记不能使用嵌套的表格。

在这种情况下,你可以使用正常的链接:

@Html.ActionLink(
    "Click here to view appointments", 
    "AppointmentsList", 
    null, 
    new { id = "applink" } 
) 

,并在一个单独的JavaScript文件AJAXify它和此刻的AJAX请求读取选择下拉值追加必要的信息来查询字符串发送:

$(function() { 
    $('#applink').click(function() { 
     $('#progress').show(); 
     $.ajax({ 
      url: this.href, 
      type: 'GET', 
      data: { id: $('#CustomerID').val() }, 
      complete: function() { 
       $('#progress').hide(); 
      }, 
      success: function(result) { 
       $('#ApptsForSelectedDate').html(result); 
      } 
     }); 
     return false; 
    }); 
}); 
+0

谢谢Darrin!我试过你的代码,它工作。你这么好! – rk1962

相关问题