2

我在ASP.NET MVC3上为文档管理系统构建一个网站,在我使用局部视图的页面中,部分视图表示一个简单的表单。下拉列表,选择一个选项时选定选项的ID应该采取行动结果。为此,我使用$.getJSON方法将值传递给操作方法。但问题是 ID 不会转到 ActionResult。谁能帮我解决这个问题?

cshtml代码

<div >
  @using (Html.BeginForm("GetFilteredActivityLogs", "Document", FormMethod.Post, new
    {
        id = "activityLog",
        @class = "form-horizontal",

    }))
  {
<h3>Activity Log</h3>
   <div>
    <div style="float: left" class="control-label">
        <label>
            Action Type
        </label>
    </div>
    <div class="controls">
    @Html.DropDownListFor(model => model.SelectedActionId, Model.ActionTypes as SelectList, "All", new { 
        id = "SelectedActionId" 
})
    </div>
    <table class="table table-bordered" style="margin-top: 20px;  width: 100%;">
        <thead>
            <tr>
                <th style="width: 15%; text-align: center">
                    Employee No

                </th>
                <th style="width: 20%; text-align: center">
                    Employee Name
                </th>
                <th style="width: 45%; text-align: center">
                    Action
                </th>
                <th style="width: 20%; text-align: center">
                    Date and Time
                </th>
            </tr>
        </thead>
        <tbody id="Activities">
        </tbody>
    </table>
    </div>
  }
</div>

控制器:

 public ActionResult GetFilteredActivityLogs(int actionTypeId)
    {
        return View();
    }

脚本:

<script type="text/javascript">
    $(function ()
    {
        $('#SelectedActionId').change(function ()
        {
            var selectedActivityId = $(this).val();

            $.getJSON('@Url.Action("GetFilteredActivityLogs", "Document")', { activityId: selectedActivityId }, function (FilteredActivities)
            {
                var ActivitySelect = $('#Activities');
                // GroupSelect.empty();
                $.each(FilteredActivities, function (index, activity)
                {
                    // some code goes here...
                });
            });
        });
    });
</script>
4

1 回答 1

1

正如 BuildStarted 所说,我认为您需要使您在 getJSON 请求(“activityId”)中发送的数据密钥与您的操作参数相匹配。当有一个参数时,我经常只使用“id”,以便在默认路由上获得匹配,从而获得一个不错的 URL(即 /Document/GetFilteredActivityLogs/123)。

这里的另一个观察:我认为值得一看 jQuery 表单插件 ( http://malsup.com/jquery/form/ )。就目前而言,您定义了两次参数,一次在 BeginForm 中,另一次在您的 javascript 中。如果您使用插件在表单本身上启用 ajax,则只能在 BeginForm 中定义参数,然后在“更改”事件处理程序中提交表单。

于 2012-07-16T08:41:11.053 回答