2

ASP.NET MVC3でドキュメント管理システムのWebサイトを構築していますが、部分ビューを使用しているページでは、部分ビューは単純なフォームを表しています。ドロップダウンリストがあり、1つのオプションを選択すると、選択したオプションの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) です。

ここでのもう 1 つの観察: jQuery フォーム プラグイン ( http://malsup.com/jquery/form/ )を見る価値があると思います。現状では、BeginForm で 1 回、JavaScript で 2 回、パラメータを 2 回定義しています。プラグインを使用してフォーム自体で ajax を有効にする場合は、BeginForm でのみパラメーターを定義し、「変更」イベント ハンドラーでフォームを送信します。

于 2012-07-16T08:41:11.053 に答える