1

この掲示板に書き込むのは初めてです。私はイタリア人の学生です。英語が下手ですみません。長い間、ASP.NET Web フォームを使用して Web アプリケーションを開発してきました。ASP.NET MVC フレームワークに移行したいと考えています。そこで、次の 2 つの質問についてお聞きしたいと思います。

  1. シナリオ 1: ビューのフォームに 2 つの DropDownList (要素) があります。最初の DropDownList にはカテゴリのリストが含まれています。最初の DropDownList の項目を変更すると、2 番目の項目がサブカテゴリのリストを自動的にロードするようになります。Web フォームでは、この仕事に UpdatePanel をよく使用しました。しかし、現在MVCでは使用できません。jQuery AJAX を使用しようとしましたが、コードが機能しません。このジョブを実装するにはどうすればよいですか? 例を教えてください。

  2. シナリオ 2: ステップ バイ ステップのウィザード フォームがあります。そのため、データを段階的に渡す (記憶する) 必要があります。このデータはどこに記憶できますか?セッション中?アドバイス?

どうもありがとう、フランチェスコ。

4

1 に答える 1

3

1)ユーザーが最初のドロップダウンを選択したときに、jQueryajaxを使用して2番目のドロップダウンのアイテムを取得できます。

カテゴリクラスが次のようになっていると仮定します

public class Category
{
  public ID { set;get;}
  public string Name { set;get;}
}

ビューのドロップダウンは次のようになります

@Html.DropDownListFor(x => x.SelectedCategoryID, 
                  new SelectList(Model.Categories, "ID", "Name"), "Select")

@Html.DropDownListFor(x => x.SelectedSubCategoryID, 
                  new SelectList(Model.SubCategories, "ID", "Name"), "Select")

ここで、最初のドロップダウンの変更イベントをリッスンして値を取得するJavaScriptをいくつか用意し、カテゴリIDを受け入れるactionメソッドをajaxで呼び出し、サブカテゴリのリストをJSON形式で返します。

<script type="text/javascript">
    $(function () {
        $("#SelectedCategoryID").change(function () {
            var self = $(this);
            var items="";
            $.getJSON("@Url.Action("Index", "GetSubCategories")?id="+self.val(),
                                                                  function(data){
                $.each(data,function(index,item){
                  items+="<option value='"+item.ID+"'>"+item.Name+"</option>";
                });
               $("#SelectedSubCategoryID").html(items);
            });
        });
    });
</script>

これGetSubCategoriesで、(サブ)カテゴリのリストをJSONフォーマットで返すアクションメソッドができました。

public ActionResult GetSubCategories(int id)
{
  List<Category> subCategoryList=new List<Category>();
  //to do : fill the list of (sub) categories to the
  // above list for the category id passed to this method.
  return Json(subCategoryList,Json.RequestBehaviour.AllowGet); 
}

2)セッションは良いはずです。

于 2012-09-22T19:05:14.310 に答える