2014-06-06 6 views
0

문제와 관련하여 너무 많은 질문을했는데 해결 방법을 찾을 수 없어서 게시했습니다. 문제. 문제는 _Sidebar.cshtml에서 검색 버튼을 클릭하여 Ajax POST 요청을 할 때 FormColection fc이 비어 있다는 것입니다. 내가 여기서 무엇을 놓치고 있니?@ Ajax.BeginForm 및 @ Ajax.ActionLink를 사용하는 동안 FormCollection 매개 변수가 비어 있습니다.

코드 부 :
_MyLayout.cshtml:

@using (Ajax.BeginForm("Results", "Search", null, new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "d_content", LoadingElementId = "spinner", OnBegin = "ToggleContent", OnComplete = "ToggleContent" },null)) 
{ 
    <div class="wrapper row-offcanvas row-offcanvas-left"> 
     <div id="a_sidebar"> 
      @{ Html.RenderAction("_Sidebar"); } 
     </div> 
     <aside class="right-side"> 
      <section class="content"> 
       <img id="spinner" src="~/Content/img/lightbox-ico-loading.gif" style="display: none;"> 
       <div id="d_content"> 
        @RenderBody() 
       </div> 
      </section> 
     </aside> 
    </div> 
} 

_Sidebar.cshtml:

<ul class="treeview-menu"> 
       <li> 
        <div class="form-group"> 
         <label>F1</label> 
         @Html.ListBox("ddF1", (MultiSelectList)ViewData["ddF1"]) 
        </div> 
        <div class="form-group"> 
         <label>F2</label> 
         @Html.ListBox("ddF2", (MultiSelectList)ViewData["ddF2"]) 
        </div> 
        <div class="form-group"> 
         <label>Status</label> 
         @Html.ListBox("ddStatusFilter", (MultiSelectList)ViewData["ddStatusFilter"]) 
        </div> 
        <div class="form-group"> 
         <label>Name</label> 
         @Html.TextBox("tbName") 
        </div> 
       </li> 
      </ul> 

<li class="treeview"> 

      <div style="text-align: center;"> 
       <button type="reset" class="btn btn-warning">Clear Filters</button> 
       @Ajax.ActionLink("Search", "Results", "Search", new { }, new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "d_content", LoadingElementId = "spinner", OnBegin = "ToggleContent", OnComplete = "ToggleContent" }, new { @class = "btn btn-success", @style = "color: white;" }) 
      </div> 
     </li> 

SearchController.cs:

[HttpPost] 
[AcceptVerbs(HttpVerbs.Post)] 
public PartialViewResult Results(FormCollection fc) 
{ 
    //TODO: Implement filtering through FormCollection in passed parameter 
    //  but that freakin' fc var is empty 
    var model = db.vw_MainTable.ToList(); 
    return PartialView("_SearchResultGrid", model); 
} 

가 많은 감사.

+2

검색 링크를 제출 단추로 만들려고 했습니까? – ssilas777

답변

1

코드에서 전체 HTML을 포함하는 양식 태그가 필요하지 않은 것 같습니다. 이런 식으로 _Sidebar.cshtml에 넣을 수 있습니다.

조치 링크를 제출 버튼으로 바꾸십시오 (아래 코드를 확인하십시오).

@using (Ajax.BeginForm("Results", "Search", null, new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "d_content", LoadingElementId = "spinner", OnBegin = "ToggleContent", OnComplete = "ToggleContent" },null)) 
{ 
      <ul class="treeview-menu"> 
       <li> 
        <div class="form-group"> 
         <label>F1</label> 
         @Html.ListBox("ddF1", (MultiSelectList)ViewData["ddF1"]) 
        </div> 
        <div class="form-group"> 
         <label>F2</label> 
         @Html.ListBox("ddF2", (MultiSelectList)ViewData["ddF2"]) 
        </div> 
        <div class="form-group"> 
         <label>Status</label> 
         @Html.ListBox("ddStatusFilter", (MultiSelectList)ViewData["ddStatusFilter"]) 
        </div> 
        <div class="form-group"> 
         <label>Name</label> 
         @Html.TextBox("tbName") 
        </div> 
       </li> 
      </ul>  
      <li class="treeview"> 
      <div style="text-align: center;"> 
       <button type="reset" class="btn btn-warning">Clear Filters</button> 
       <button type="submit" class="btn"> Search</button> 
      </div> 
      </li 
} 
+0

제출 버튼이 누락되었습니다. 고마워! –

+0

네, 정말로 .. 그것이 당신을 위해 일해 주어서 기뻐요. – ssilas777

0

여러 가지 이유가있을 수 있습니다. 필자의 경우에는 양식 필드에 Name 속성이없고 Name 속성 만 있기 때문에 상황이 발생했습니다.

입력 필드에 Name 속성을 추가 한 후 컨트롤러에서 잘 볼 수 있습니다.