1

この値を入力する必要があります:

  @Html.DropDownList("region", new[]{ 
           new SelectListItem() { Text = "MA", Value = "MA" },
                new SelectListItem() { Text = "BC", Value = "BC" },
                     new SelectListItem() { Text = "ON", Value = "ON" },

          })

ここに:

@Html.ActionLink("<<", "List", new { page = 1, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter, zipCode = ViewData["zipCode"], searchType = ViewData["searchType"], distance = ViewData["distance"], region = ViewData["region"], country = ViewData["country"] })

ViewData["region"] が null で、リンクをクリックしても値を取得できません。DropDownList の地域の値をクエリ文字列に入れるにはどうすればよいですか? コードでリージョンをデフォルトの MA に設定しました。

public ViewResult List(string sortOrder, string currentFilter, string searchString, int? page, string zipCode, string region, int? distance, string searchType, string country)
    {
        _storeService = new StoreService();

         //sets defaults
         if (String.IsNullOrEmpty(zipCode))
         {
             zipCode = "02472";
         }

         if (String.IsNullOrEmpty(region))
         {
             region = "MA";
         }
    }
4

2 に答える 2

1

ページの読み込み時に URL を設定することはできないため、クリック リスナーをアンカー タグに追加し、そこでリンクを更新します。

@Html.ActionLink("<<", "List", new { ... },
    new { onclick = "updateLink(this);" })

ハンドラーは、リージョン ドロップダウンからリージョンを取得し、リンクの を更新する必要がありますhref

function updateLink(anchor) {
    var select = document.getElementById('region');
    var region = select.options[select.selectedIndex].value;
    anchor.href = e.href + "&region=" + region;
}

于 2012-11-15T02:20:43.033 に答える
0

ユーザーがあなたのページを見るとき、それはすでにリンク値でレンダリングされています、そして私はあなたがユーザーが彼女の選択をした後に選択された値がそのリンクに置かれることを望むと思います。クライアント側のもの。コードから-最初からコントローラーに入力されていないViewData["region"]からの値をコントローラーに渡します。それがあなたがヌルになる理由です。ajaxを使用して、選択が変更されたときにビューデータを入力します。

于 2012-11-15T02:36:24.353 に答える