2017-05-09 71 views
-2

请参阅附加的图像。 我使用动态DropDownList显示国家,州&城市在我的Add_New组织形式。我正在从SQL数据库中检索DropDownList项目。动态DropDownList中的问题使用JQuery

问题是,当我点击提交按钮时,它将ID存储到数据库中,而不是DropDownList项的文本。

请帮我我已经尝试了很多解决方案,但问题仍然存在。 控制器将数据保存:

[HttpPost] 
Public ActionResult Addnew(Organiztioninfo org) 
{ 
    db.Organiztioninfoes.Add(org); 
    db.SaveChanges(); 
    return View(); 
} 
//Organization Info is my table name. I am using Entity Framework 

控制器用于检索国家列表数据表格数据库:

Public JsonResult Details() 
{ 

var country = db.countries.ToList(); 
//countries is database table name holding list of countries 
List<SelectListItems> licountry = new List<SelectListItems>(); 
foreach(var u in country) 
{ 

    licountry.Add(new SelectListItems{Text = u.Name, Value= u.ID.ToString()}); 
} 

    return Json(new SelectList(licountry, "Value", "Text", 
JsonRequestBehaviour.AllowGet)) 
} 
//Same Methods are implemented for populating State & Cities list.. 

DropDownList-Code|| J Query-Dynamic List||

+0

将数据保存到数据库的代码在哪里?你是否将数据保存在同一个表中? –

+0

我有一个在HTTP POST请求上调用的控制器方法。 – Ali

+0

您能分享该代码吗?使用代码更新原始帖子...请勿在评论中分享代码.. –

回答

0

这背后的原因是下拉的SelectedValue属性被分配到类对象的属性Organiztioninfo。下拉列表中的Value属性与的Country,StateCity绑定,如J Query-Dynamic List图所示。

如果您不希望Id被分配,则应在下面动态创建下拉列表时将Value设置为data.Text

//For country 
$("#country").appened('<option value="' + data.Text + '">' + data.Text + '</option>'); 

//For States 
$("#province").appened('<option value="' + state.Text + '">' + state.Text + '</option>'); 

// For city (I assume that the dataitem name is 'city' here. 
$("#city").appened('<option value="' + city.Text + '">' + city.Text + '</option>'); 

这应该可以解决您的问题。

+0

我试过这个解决方案。但在我的表单中,当用户从DropDownList中选择国家选项时。 JQuery脚本根据用户选择的国家Item_ID填充状态项目。所以如果我们将data.Value改成data.Text。那么JQuery将无法找到该特定国家/地区项目的记录。 – Ali

+0

好吧..知道了..有道理......但为什么你想要存储名称而不是ID?如果一个或多个国家的名称稍后改变,该怎么办?您将在OrganizationInfo表中包含无效数据...我确信您已经考虑过了。 –

+0

我想我知道通过使用隐藏字段解决这个问题的其他方法...给我一些时间。我会更新我的答案..到那个时候你可以分享基于选定的国家填充国家的代码吗? –