1

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

这是我正在尝试做的事情:

  1. 我有一个简单的表“产品”,我使用我的模型从中检索所有值。products 表有一个字段 Id、Name、Price 和 StartDate。
  2. 我将数据从控制器传递到视图作为列表
  3. 在视图中,我有一个自动完成字段 (KendoUI),我在其中输入产品名称
  4. 在 AutoCoplete 更改事件的事件处理程序中,我想检索已在 AutoComplete 文本框中键入的产品的“价格”

下面是产品的代码:

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)?如果是,那么正确的方法是什么?

先感谢您

左撇子

4

1 回答 1

0

我认为视图被渲染一次(在 HTTP GET 期间)是否正确,因此我无法在 Razor 中动态过滤模型(但只能在 Javascript 中)?

对,那是正确的。

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

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

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

于 2013-03-31T14:35:35.257 回答