2013-03-31 141 views
1

基於文本框的值來過濾模型這個問題可能完全沒有意義,但我是MVC和Razor中的新手。如何使用Javascript(剃刀)

這裏是我想要做的事:

  1. 我有一個簡單的表「產品」在那裏我retrrieve使用我的模型中的所有 值。產品表具有字段Id,名稱,價格和開始日期 。
  2. 我傳遞的數據從控制器到 視圖作爲List
  3. 在我有一個自動完成字段(KendoUI)的視圖,其中I型的產品
  4. 的 名稱在事件處理程序 在AutoCoplete變化事件,我要檢索的 「價格」已在自動完成文本框

下面被輸入的產品爲產品代碼:

public class Product 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public DateTime FirstRelease { get; set; } 
    public decimal Price { get; set; } 
} 

public class WidgetsDBContext : DbContext 
{ 
    public DbSet<Product> Products { get; set; } 
} 

我的視圖(部分代碼)的代碼如下:

<div id="auto"> 
    <p>Start typing</p> 
    <label for="productAutoComplete">Please select procuct:</label> 
    @(Html.Kendo().AutoComplete() 
     .Name("productAutoComplete") 
     .DataTextField("Name") 
     .BindTo(Model) 
     .Filter(FilterType.StartsWith) 
     .Placeholder("Select the product") 
     .HighlightFirst(true) 
     .Suggest(true) 
    ) 

    <script> 
     function productAutoComplete_change() { 
      var gauge = $("#linearGauge").data("kendoLinearGauge"); 
      @foreach (var p in Model) <==== HERE I WANT TO DO THE FILTERING 
      { 
       @: gauge.value(@p.Price); 
      }      
     } 

     $("#productAutoComplete").bind("change", productAutoComplete_change); 

    </script> 
</div> 

關心驗證:如果我沒有理解MVC和剃刀的基礎好,那我是正確的認爲的觀點是呈現一次(在HTTP GET期間),因此我無法動態過濾Razor中的模型(但僅限於Javascript)?如果是的話,那麼正確的做法是什麼?

預先感謝您

Lefteris

+1

請看這裏:http://docs.kendoui.c​​om/getting-started/using-kendo-with/aspnet-mvc/helpers/autocomplete/overview,這裏http://docs.kendoui.c​​om/api/framework/datasource,如果你想使用ServerFiltering。 –

回答

0

我是正確的認爲視圖渲染一次(在HTTP GET期間),因此我不能夠動態地過濾模型 剃刀(但僅限於Javascript)?

是的,這是正確的。

如果是,那麼做什麼是正確的方法?

您可以使用AJAX。例如,在productAutoComplete_change函數中,您可以向控制器操作發送AJAX請求,該操作將執行過濾並返回包含過濾結果的部分視圖。

有很多關於在ASP.NET MVC中使用AJAX的教程。例如,使用jQuery,您可以使用$.ajax()函數。

+0

謝謝Darin。我希望,因爲我已經在數據庫中執行了一次查找(爲了構建自動完成字典),我可以避免再次執行此操作(通過ajax調用) – Lefteris