C# 用JsonData填充DropDownList
我以前从未使用过Json,这是我第一次使用Json,正如预期的那样,我在想用JsonData填充下拉列表时遇到了问题。 这里我要做的是我有一个Xml,我正在用Json转换它,比如:C# 用JsonData填充DropDownList,c#,asp.net,json,asp.net-mvc-4,C#,Asp.net,Json,Asp.net Mvc 4,我以前从未使用过Json,这是我第一次使用Json,正如预期的那样,我在想用JsonData填充下拉列表时遇到了问题。 这里我要做的是我有一个Xml,我正在用Json转换它,比如: string xml = "<Root><Name>A</Name><Name>B</Name><Name>C</Name></Root>"; 当前我的视图类似于: <div> <inp
string xml = "<Root><Name>A</Name><Name>B</Name><Name>C</Name></Root>";
当前我的视图类似于:
<div>
<input type="button" value="work" name="work" id="idwork" />
</div>
@Html.DropDownListFor(x => x.Name, new SelectList(Enumerable.Empty<SelectListItem>()), new {id="ddl_items" })
@DropDownListFor(x=>x.Name,新的SelectList(Enumerable.Empty()),新的{id=“ddl_items”})
脚本:
XmlDocument doc = new XmlDocument();
doc.LoadXml(Xml);
string jsonText = JsonConvert.SerializeXmlNode(doc);
var ddl = $('#ddl_items');
$('#idwork').on('click', function () {
$.ajax({
url: url,
data: {},
type: 'post',
contentType: 'application/json; charset=utf-8',
success: function (myJSONdata) {
$(myJSONdata.Name).each(function () {
ddl.append(
$('<option/>', {
value: this.ReworkTunnelName
}).html(this.Nome)
..
..
});
var-ddl=$(“#ddl_项”);
$('#idwork')。在('click',函数(){
$.ajax({
url:url,
数据:{},
键入:“post”,
contentType:'application/json;charset=utf-8',
成功:函数(myJSONdata){
$(myJSONdata.Name){
ddl.append(
$('', {
值:this.ReworkTunnelName
}).html(this.Nome)
..
..
});
现在我要做的是在这个JsonData的帮助下,用名称填充下拉列表。
请帮助您可以创建一个新的javascript函数,并将下拉id和json数据作为参数传递给它 然后可以根据数据结构解析json数据。进一步运行循环并在select元素中添加项。
$。每个(myJSONdata,function()
$.each(myJSONdata, function ()
{
ddl.append($("<option></option>").attr("value", this.ReworkTunnelName).text(this.Nome));
});
{
addl.append($(“”).attr(“value”,this.ReworkTunnelName).text(this.Nome));
});
编辑
$。每个(myJSONdata,函数()
{
addl.append($(“”).attr(“value”,this.ReworkTunnelName).attr(“text”,this.Nome));
});
$.each(myJSONdata.Root,函数()
{
ddl.append($(“”).attr(“text”,this.ReworkTunnelName));
});
您可以在jQuery中使用getJSON
方法:
$.getJSON("ActionMethodName", "", function (data) {
$(data).each(function () {
$("<option>").val(this.ReworkTunnelName)
.text(this.Nome)
.appendTo("#ddl_items");
});
});
$.getJSON(“ActionMethodName”,函数(数据){
$(数据)。每个(函数(){
$(“”).val(此.ReworkTunnelName)
.text(此.Nome)
.附于(“#ddl_项目”);
});
});
HTML:
<select id="ddl_items">
<option></option>
</select>
试试这个
$.each(myJSONdata, function (index, item) {
$('#ddl_items').get(0).options[$('#ddl_items').get(0).options.length] = new Option(item.Text, item.Value);
});
我最终做了这件事,效果很好
$('#idRework').on('click', function () {
$.ajax({
url: url,
data: {},
type: 'post',
contentType: 'application/json; charset=utf-8',
success: function (myJSONdata) {
var obj = jQuery.parseJSON(myJSONdata);
$.each(obj.Root.ReworkTunnelName, function (index, itemData) {
ddl.append($('<option></option>').val(itemData).html(itemData));
});
}
});
});
$('idwork')。在('click',函数(){
$.ajax({
url:url,
数据:{},
键入:“post”,
contentType:'application/json;charset=utf-8',
成功:函数(myJSONdata){
var obj=jQuery.parseJSON(myJSONdata);
$.each(obj.Root.ReworkTunnelName,函数(索引,itemData){
append($('').val(itemData.html(itemData));
});
}
});
});
如果你能发布一个这样做的代码,那会更有帮助。我正要写代码。但我看到了“Rex”的答案,它正在解决问题。所以保持原样。这是给Uncaughtexception on.text(This.Nome));说对象没有方法text@Farzi我还添加了另一个选项,我已经在使用第一个选项,它在mvc下拉列表中运行良好text@Farzi您需要调试并查看下拉列表是否支持文本属性。通常应该是。我得到的Jsondata是以下形式:“{”Root“:{”ReworkTunnelName:[“A”,“B”,“C”]}”我想在下拉列表中显示一个B C是的..在“$('.#ddl_items')”附近有一个额外的“)”。现在删除..检查更新的答案
$('#idRework').on('click', function () {
$.ajax({
url: url,
data: {},
type: 'post',
contentType: 'application/json; charset=utf-8',
success: function (myJSONdata) {
var obj = jQuery.parseJSON(myJSONdata);
$.each(obj.Root.ReworkTunnelName, function (index, itemData) {
ddl.append($('<option></option>').val(itemData).html(itemData));
});
}
});
});