1

我正在尝试使用 MVC 4 中的 Ajax.Actionlink 传递表单值“CustomerID”(iedropdownlist 选定值)。有人可以告诉我我在这里做错了什么吗?

<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)
{   ... }
4

1 回答 1

3

您应该使用Ajax.BeginForm并将下拉列表放入表单中。这样,值将自动传递。

不幸的是,如果您已经有另一个包装此标记的表单,则无法嵌套 html 表单,因此您不能使用嵌套表单。

在这种情况下,您可以使用普通链接:

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

并在一个单独的 javascript 文件中对其进行 AJAX 化,并通过在发送 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;
    });
});
于 2012-08-27T10:16:47.883 回答