如何使用Javascript(Razor)根据文本框的值过滤模型

时间:2013-03-31 14:24:35

标签: javascript asp.net-mvc razor kendo-ui

这个问题可能完全没有意义,但我是MVC和Razor的新手。

以下是我要做的事情:

  1. 我有一个简单的表“产品”,我从那里看到了所有的东西 使用我的模型的值。产品表有一个字段ID,Name, 价格和StartDate。
  2. 我将数据从Controller传递给     作为列表的视图
  3. 在视图中,我有一个自动完成字段(KendoUI),我在其中键入 产品名称
  4. 在事件处理程序中     AutoCoplete更改事件,我想检索“价格”     已在“自动完成”文本框中键入的产品
  5. 以下是产品代码:

    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和Razor的基础知识,那么我认为视图呈现一次(在HTTP GET期间)是正确的,因此我无法在Razor中动态过滤模型(但仅限于Javascript)?如果是,那么正确的方法是什么?

    提前谢谢

    Lefteris

1 个答案:

答案 0 :(得分:0)

  

我是否认为视图呈现一次(在HTTP期间)   GET)因此我无法动态过滤模型   剃刀(但只能用Javascript)?

是的,这是正确的。

  

如果是,那么正确的方法是什么?

你可以使用AJAX。例如,在productAutoComplete_change函数中,您可以向控制器操作发送AJAX请求,该操作将执行过滤并返回包含过滤结果的部分视图。

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