Asp.net mvc .Net RunTimeBinderException

Asp.net mvc .Net RunTimeBinderException,asp.net-mvc,asp.net-dynamic-data,Asp.net Mvc,Asp.net Dynamic Data,我有一个包含复杂数据的数据内容,我只需要在数据的动态视图中显示的索引名。在调试模式下,我可以看到数据,但无法获取数据 您可以在下图中看到数据的内容): 我找到了一个解决方案,可以检查所选索引是否包含文档;如果是, 我获取索引中的第一个文档,并将其解析为客户机中的键(字段名)。 这是我的职责: [HttpPost] public ActionResult getIndexFields(string index_name) { var node

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

您可以在下图中看到数据的内容):


我找到了一个解决方案,可以检查所选索引是否包含文档;如果是, 我获取索引中的第一个文档,并将其解析为客户机中的键(字段名)。 这是我的职责:

[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
            });

        }
[HttpPost]
公共操作结果getIndexFields(字符串索引\u名称)
{
var node=新Uri(“http://localhost:9200");
var设置=新连接设置(
节点,
defaultIndex:index\u名称
);
var esclient=新的ElasticClient(设置);
var Documents=esclient.Search(s=>s.Index(Index_name).AllTypes().Source());
字符串字段=”;
if(Documents.Documents.Count()>0)
{
fields=JsonConvert.SerializeObject(Documents.Documents.FirstOrDefault());
var data=Documents.Documents.FirstOrDefault().Source;
返回Json(新的
{
结果=字段,
成功=正确
});
}
返回Json(新的
{
结果=”,
成功=错误
});
}
还有我的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);
            }
        });
$.ajax({
url:“getIndexFields?index_name=“+$(this).val(),
类型:“POST”,
成功:功能(数据){
if(data.Success){
var fields=JSON.parse(data.result);
var字段_arr=[];
$.each(字段、函数(值、索引){
字段\u arr.push(
{
id:值,
标签:值
})
});
options.filters=字段\u arr;
var lang=“en”/$(this.val();
var done=函数(){
var rules=$b.queryBuilder('getRules');
如果(!$.isEmptyObject(规则)){
options.rules=规则;
}
options.lang_code=lang;
$b.queryBuilder(“销毁”);
$(“#builder”).queryBuilder(选项);
};
调试器
if($.fn.queryBuilder.regional[lang]==未定义){
$.getScript(“../dist/i18n/query builder.+lang+”.js',完成);
}
否则{
完成();
}
}
否则{
event.theme='ruby';
event.heading=‘进程失败’;
event.message='用户无法创建';
event.sticky=true;
$(“#divfailed”).empty();
$(“#divfailed”).hide();
$(“#divfailed”).append(“+data.ErrorMessage”);
元(500元);;
setTimeout(函数(){
$(“#divfailed”).hide(500);
}, 3000);
}
},
错误:函数(a、b、c){
调试器
event.theme='ruby';
event.heading=‘进程失败’;
event.message='无法创建对象';
$(“#divfailed”).empty();
$(“#divfailed”).hide();
msg=c!==“”?c:a.responseText;
$(“#divfailed”).append(“+msg”);
元(500元);;
setTimeout(函数(){
$(“#divfailed”).hide(500);
}, 3000);
}
});
$.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);
            }
        });