1

この質問はまったくナンセンスかもしれませんが、私は MVC と Razor の初心者です。

これが私がやろうとしていることです:

  1. モデルを使用してすべての値を取得する単純なテーブル「製品」があります。products テーブルには、フィールド Id、Name、Price、および StartDate があります。
  2. コントローラーからビューにリストとしてデータを渡しています
  3. ビューには、製品の名前を入力する AutoComplete フィールド (KendoUI) があります。
  4. オートコンプリートの変更イベントのイベントハンドラーで、オートコンプリートのテキストボックスに入力した商品の「価格」を取得したい

以下は、製品のコードです。

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 中に) 1 回レンダリングされるため、Razor でモデルを動的にフィルター処理することはできません (ただし、ジャバスクリプト)?はいの場合、それを行う正しい方法は何ですか?

前もって感謝します

レフテリス

4

1 に答える 1

0

ビューが (HTTP GET 中に) 1 回レンダリングされるため、Razor でモデルを動的にフィルター処理できない (Javascript のみ) と考えるのは正しいですか?

それは正解です。

はいの場合、それを行う正しい方法は何ですか?

AJAX を使用できます。たとえば、このproductAutoComplete_change関数では、フィルタリングを実行し、フィルタリングされた結果を含む部分ビューを返すコントローラー アクションに AJAX 要求を送信できます。

ASP.NET MVC での AJAX の使用に関するチュートリアルは数多くあります。たとえば、jQuery では$.ajax()関数を使用できます。

于 2013-03-31T14:35:35.257 に答える