问题描述
我正在尝试为 jstree 节点创建一个 HtmlHelper。我的部分目标是将“select_node”逻辑封装成可重用的格式。出于我们的目的,我们可以期望使用 jquery“GET”,它将调用 MVC 控制器方法。该 URL 需要是动态的,并通过 html 自定义数据属性传入。成功后的结果行为也需要是动态的,并且也通过相同的方式传递。我的问题是,尽管传入的 URL 被正确解释和调用(控制器方法被命中),但我无法让“成功”部分正常工作。下面是带有相应注释的代码示例。非工作场景(最后一次评论尝试“data.node.li_attr.success”)将是理想的,因为我们需要传入多行。
writer.WriteLine("</ul>");
writer.WriteLine("</div>");
writer.WriteLine($"<script>");
writer.WriteLine($"$({treeParamModel.TreeName}).jstree({{"); // base tree deFinition
// "core" config standard to every jstree
writer.WriteLine("'core':{");
writer.WriteLine($"'multiple':{treeParamModel.IsMultiSelectAllowed.ToString().ToLower()}");
writer.WriteLine("},");
// "types" plugin
writer.WriteLine("'types':{");
writer.WriteLine("'default':{");
writer.WriteLine($"'icon':'{treeParamModel.IconPath}'");
writer.WriteLine("}");
writer.WriteLine("},");
writer.WriteLine("'plugins' : ['types']"); // define which plugins to bring in
writer.WriteLine("})");
writer.WriteLine($".on('select_node.jstree',function (e,data) {{");
writer.WriteLine("$.get({url: data.node.li_attr.get_url,");
writer.WriteLine("success: function (result) { alert(data.node.li_attr.success)}"); // works (correctly displays variable content.)
//writer.WriteLine("success: function (result) { $(data.node.li_attr.success)}"); // WHY? "Uncaught Error: Syntax error,unrecognized expression: alert('hello')"
writer.WriteLine("});");
writer.WriteLine("});");
writer.WriteLine("</script>");
MVC 视图传入以下内容:
@{
var treeName = "tree";
var success = "alert('hello');";
}
更新 我和我的同事发现使用“eval()”函数几乎可以达到我们想要的结果。
writer.WriteLine("success: function (result) { eval(data.node.li_attr.success)}");
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)