2012-07-16 54 views
2

我正在ASP.NET MVC3上構建文檔管理系統的網站,在頁面中我使用的是局部視圖,局部視圖表示一個簡單的Form.There有一個下拉列表,當選擇一個選項時,所選選項的ID應該轉到操作Result。爲此,我使用$ .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> 
+2

嘗試將您的json從'{activityId:selectedActivityId}'更改爲'{actionTypeId:selectedActivityId}'。您的視圖需要單個傳遞的參數,但您並未發送具有該名稱的參數。 – Buildstarted 2012-07-16 08:23:06

+0

感謝BuildStarted。它工作時,我改變我的JSON。再次感謝你..... – Krishan 2012-07-16 08:51:24

回答

1

由於BuildStarted說,我覺得你需要你在的getJSON發送數據的關鍵請求(「activityId」)與您的操作參數匹配。爲了在默認路由上獲得匹配並因此獲得一個漂亮的URL(即/ Document/GetFilteredActivityLogs/123),我經常只使用「id」。

另外一個觀察點在這裏:我認爲值得看一下jQuery表單插件(http://malsup.com/jquery/form/)。就目前而言,您需要兩次定義參數,一次在BeginForm中,另一次在JavaScript中定義。如果你使用插件在表單本身上啓用ajax,則只能在BeginForm中定義參數,然後在「更改」事件處理程序中提交表單。

+0

感謝centralscru。它工作時,我改變我的JSON。再次感謝你..... – Krishan 2012-07-16 08:51:11

相關問題