1

一部のデータをJsonとして読み込み、逆シリアル化し、DropDownListのビューに表示しようとしています。データは次のようになります。

{
  "products": [
    {
      "body_html": "<p> ....</p>",
      "created_at": "2012-09-19T11:55:44-04:00",
      ...
      "tags": "Emotive, Flash Memory, MP3, Music",
      "variants": [
        {
          "compare_at_price": null,
          "created_at": "2012-09-19T11:55:44-04:00",
          ...
          "inventory_quantity": 10
        }
      ],
      "images": [
        {
          "created_at": "2012-09-19T11:55:44-04:00",
          "id": 850703190,
          ...
        }
      ]
    }
  ]
}

うまくいかなかったいくつかの異なることを試しました。今、私は自分のコントローラーに持っています:

var data = Newtonsoft.Json.Linq.JObject.Parse(productsJson.ToString())["products"];
SelectList productsData = JsonConvert.DeserializeObject<SelectList>(data.ToString());
ViewData["products"] = productsData;

そして、ビューで:

@Html.DropDownList("ProductList", (SelectList)ViewData["products"])

現在、次のエラーが発生しています。

リストタイプSystem.Web.Mvc.SelectListを作成して入力できません。

説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとそれがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。

例外の詳細:System.InvalidOperationException:リストタイプSystem.Web.Mvc.SelectListを作成して設定できません。

ヘルプをいただければ幸いです。

4

3 に答える 3

1

ドロップダウンリストにjsonを入力するための別のソリューションを提供します

私のコントローラーでは、アクションがあり、国の選択で州を埋めます

public JsonResult State(int countryId){

    var stateList = CityRepository.GetList(countryId);
    return Json(stateList, JsonRequestBehavior.AllowGet);
} 

私の見解では、私はこのように私の状態ドロップダウンリストをバインドします

<script type="text/javascript">
    function cascadingdropdown() {
        $("#stateID").empty();
        $("#stateID").append("<option value='0'>--Select State--</option>");
        var countryID = $('#countryID').val();
        $.ajax({
            url: "/City/State",
            dataType: 'json',
            data: { countryId: countryID },
            success: function (data) {
                $("#stateID").empty();
                $("#stateID").append("<option value='0'>--Select State--</option>");
                $.each(data, function (index, optiondata) {
                    alert(optiondata.StateName);
                    $("#stateID").append("<option value='" + optiondata.ID + "'>" + optiondata.StateName + "</option>");
                });
            },
            error: function () {
                alert('Faild To Retrieve states.');
            }

        });
    } 
</script>

私はこれがあなたを助けると思います...

于 2012-09-27T06:42:20.923 に答える
0

productsSelectListJSONのはtypeと互換性がありません。SelectListを手動で入力してみてください。

于 2012-09-27T06:30:41.723 に答える
0

まず、jsonを製品タイプに解析する必要があります。次に、次のように使用できます。

var products = new SelectList(parsedProductList,"valueField here", "textField here");
于 2012-09-27T06:39:37.367 に答える