2013-10-30 110 views
1

我對mvc3相當新,所以請耐心等待。部分視圖不會更新後ajax.beginform

這是場景: 在我看來,我有一個小菜單和另一個局部視圖,它顯示了名稱與用戶輸入相匹配的產品。

@model List<BlokCWebwinkelGroep3.Models.Product>

在迷你菜單我有一個滑塊(2個滑塊手柄)和一個按鈕「搜索」(兩者都處於ajax.beginform)。當我點擊搜索按鈕時,滑塊的2個值會作爲參數發送給HttpPost actionmethod「search」(這些值位於隱藏的輸入字段中,當某人滑動滑塊時,這些值將由某個javascript更新),該返回值partialview(_myPartial,模型)。 (該模型是一個列表)。

Ajax.BeginForm

@using (Ajax.BeginForm("Search", 
        new AjaxOptions 
        { 
         UpdateTargetId = "table-container", 
         InsertionMode = System.Web.Mvc.Ajax.InsertionMode.Replace, 
         HttpMethod = "POST" 
        })) 
{ 
    <input type="hidden" name = "hidden" id="hidden_amount" /> 
    <div id="slider-range"> 
    </div> 
    <br /> 
    <button type="submit" value="Search"> 
     Search</button> 
} 

操作方法

[HttpPost] 
    public PartialViewResult Search(string hidden) 
    { 
     List<Product> Model = null; 
     string[] values = hidden.Split(' '); 
     int[] convertedString = Array.ConvertAll<string, int>(values, int.Parse); 
     string name = (string)TempData["searched"]; 
     try 
     { 
      Model = ResultDBController.GetAdvancedSearched(name, convertedString[0], convertedString[1]); 
     } 
     catch (Exception e) 
     { 
      ViewBag.Foutmelding = "Er is iets foutgegaan: " + e; 
     } 
     return PartialView("_Product", Model); 
    } 

的UpdateTargetId是div 「表容器」

@*Calls the _Product partial view*@ 
<div class="table-container">@Html.Partial("_Product", Model)</div> 

然後通過漢邦運行人觀點,但是它不會在屏幕上顯示出來..

局部視圖

<table class="productlist"> 
@foreach (BlokCWebwinkelGroep3.Models.Product product in Model) 
{ 
    <tr class="product" onclick="location.href = '@(Url.Action("ProductPage", "Product", new {ProductID = @product.ProductID}))'"> 

     <td> 
      <img src = '@product.ImageURL' alt = '@product.Name' /> 
     </td> 
     <td> 
      @product.Name 
     </td> 
     <td> 
      €@product.Price 
     </td> 
    </tr> 
} 

說我搜索 「ER」,會在屏幕上顯示3種產品。 2個是< 75歐元,另一個是183歐元。如果我將滑塊設置爲75 - 300,我可以調試並查看一切正常。在actionmethod中返回的partialview僅包含183歐元的產品,然後它在部分視圖中循環一次,但部分視圖不更新到該版本,它與3個產品保持同一版本。

我在這裏做錯了什麼?

P.S. 我用下面的腳本我的頭

 <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 
<script type="text/css" src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 

回答

2

MSDN文檔指出UpdateTargetId更新一個DOM ID,而不是因爲你正在做的一類。將您的課程更改爲ID,並且應該按預期工作。

<div id="table-container" 
+0

你是英雄,非常感謝! 這是一個經典的編程案例太多,我認爲..我做了正確的方式與另一部分代碼中的ajax.actionlink .. 太糟糕了,我不能投票了! :( – Tom

+0

我的榮幸!有時很難看到樹木的森林:)。祝你好運 –

相關問題