2011-11-25 56 views
2

我有一個Partial View,它返回一個使用Ajax.BeginForm()插入到DOM中的表。但部分視圖沒有被調用。當我通過調試器時,它只是跨過部分視圖。爲什麼?部分視圖沒有執行

---------------這是帶有Ajax調用的視圖----------------------

<h2>Enter a street name</h2> 

@using (Ajax.BeginForm("QuickSearchResults", "Search", 
         new AjaxOptions 
         { 
          HttpMethod = "Get", 
          InsertionMode = InsertionMode.Replace, 
          UpdateTargetId = "test" 
         })) 

{ 
    <input type="text" name="q" /> 
    <input type="submit" value="Search" />  
} 





<div id="test"> 

    </div> 

----------------------控制器操作-------------------- --------------

public PartialViewResult QuickSearchResults(string q) 
      { 
       ViewBag.LogOn = true; 
       var properties = remsrepository.GetPropertyByStreetName(q); 

       **return PartialView("_Property", properties);** 
      } 

------------------------------Partial View -------------------------- 



@model IEnumerable<REMS.Models.Property> 

    <table id="searchresults"> 
     <tr> 
      <th>Adress</th> 
      <th>Status</th> 
     <th>List Price</th> 
     </tr> 
    @foreach(var item in Model) 
    { 
     <tr> 


      <td> 
       @Html.ActionLink(item.Property_Address.Street__ + " " + `item.Property_Address.Street_Name,` 
       "PropertyDetails","Search", new {MLS = item.MLS}) 

      </td> 
      <td> 
       @item.Status 
      </td>   
      <td> 
       @item.List_Price 
      </td> 
     </tr> 
    } 

    </table> 

回答

0

您已設置但searchresults元素是qctually局部視圖中。這意味着如果在頁面最初加載時分部視圖不是DOM的一部分,那麼當您提交AJAX表單時,沒有id =「searchresults」的元素,因此沒有任何反應。一種可能性是在部分外部放置一個具有唯一ID的div,然後將其用作UpdateTargetId

+0

我在Ajax.BeginForm()後面有一個表標記。由於格式問題,它沒有顯示。但你現在可以看到它。部分視圖確實會返回一個非空對象(屬性)。但它沒有被插入到DOM中。我也有一個腳本src =「../../ Scripts/jquery.unobtrusive-ajax.min.js」type =「text/javascript」在_Layout.cshtml – stackuser

+0

@stackuser,啊,所以你有2具有相同ID的元素?這是無效的HTML。 –

+0

謝謝!我刪除了表格標籤,並添加了一個不同名稱的div,它的工作原理。再次感謝。 – stackuser