.Net RunTimeBinderException

.Net RunTimeBinderException

我有一个数据内容包含复杂的数据我只需要在数据的动态视图中显示的索引名称。在调试模式下我可以看到数据但无法获取它们..

数据内容如下图):

 if(hits.Count() > 0)
            {
                var data = hits.FirstOrDefault().Source;
                var dataaa = JsonConvert.DeserializeObject(hits.FirstOrDefault().Source);
            }

我找到了检查所选索引是否有文档的解决方案;如是, 我获取索引中的第一个文档,并将其解析为客户端中的键(字段名称)。 这是我的功能:

[HttpPost]
        public ActionResult getIndexFields(string index_name)
        {
            var node = new Uri("http://localhost:9200");
            var settings = new ConnectionSettings(
                node,
                defaultIndex: index_name
            );
            var esclient = new ElasticClient(settings);
            var Documents = esclient.Search<dynamic>(s => s.Index(index_name).AllTypes().Source());
            string fields = "";
            if (Documents.Documents.Count() > 0)
            {
                fields = JsonConvert.SerializeObject(Documents.Documents.FirstOrDefault());
                var data = Documents.Documents.FirstOrDefault().Source;
                return Json(new
                {
                    result = fields,
                    Success = true
                });
            }

            return Json(new
            {
                result = "",
                Success = false
            });

        }

和我的 js:

$.ajax({
            url: "getIndexFields?index_name=" + $(this).val(),
            type: "POST",
            success: function (data) {
                if (data.Success) {
                    var fields = JSON.parse(data.result);
                    var fields_arr = [];
                    $.each(fields, function (value, index) {
                        fields_arr.push(
                            {
                                id: value,
                                label: value
                            })
                    });
                    options.filters = fields_arr;
                    var lang = "en";//$(this).val();

                    var done = function () {
                        var rules = $b.queryBuilder('getRules');
                        if (!$.isEmptyObject(rules)) {
                            options.rules = rules;
                        }
                        options.lang_code = lang;
                        $b.queryBuilder('destroy');
                        $('#builder').queryBuilder(options);
                    };
                    debugger
                    if ($.fn.queryBuilder.regional[lang] === undefined) {
                        $.getScript('../dist/i18n/query-builder.' + lang + '.js', done);
                    }
                    else {
                        done();
                    }
                }
                else {
                    event.theme = 'ruby';
                    event.heading = '<i class=\'fa fa-warning\'></i> Process Failure';
                    event.message = 'User could not create.';
                    event.sticky = true;
                    $("#divfailed").empty();
                    $("#divfailed").hide();
                    $("#divfailed").append("<i class='fa fa-warning'></i> " + data.ErrorMessage);
                    $("#divfailed").show(500);
                    setTimeout(function () {
                        $("#divfailed").hide(500);
                    }, 3000);
                }
            },
            error: function (a, b, c) {
                debugger
                event.theme = 'ruby';
                event.heading = '<i class=\'fa fa-warning\'></i> Process Failure';
                event.message = 'Object could not create.';
                $("#divfailed").empty();
                $("#divfailed").hide();
                msg = c !== "" ? c : a.responseText;
                $("#divfailed").append("<i class='fa fa-warning'></i> " + msg);
                $("#divfailed").show(500);
                setTimeout(function () {
                    $("#divfailed").hide(500);
                }, 3000);
            }
        });