mvc 三级联动省市区 无法赋值!!

yufeiyunsui 2014-12-12 12:35:56

前台

<script type="text/javascript">
function getCity(provinveCode) {
$("#City").html(""); //清空
$.ajax({
type: "GET",
url: $("#GetCityList").val(),
data: "p=" + provinveCode + "&date=" + new Date(),
dataType: "json",
success: function (json) {
if (json.length > 0) {
for (var i = 0; i < json.length; i++) {
$("#City").append("<option value='" + json[i].Value + "'>" + json[i].Text + "</option>");
}
getTown(json[0].Value);
} else {
$("#City").append("<option value=''>请选择</option>");
}
},
error: function (data) {
alert(data);
}
});
}
function getTown(shi) {
$("#Town").html(""); //清空
$.ajax({
type: "GET",
url: $("#GetTownList").val(),
data: "s=" + shi + "&date=" + new Date(),
dataType: "json",
success: function (json) {
if (json.length > 0) {
for (var i = 0; i < json.length; i++) {
$("#Town").append("<option value='" + json[i].Value + "'>" + json[i].Text + "</option>");
}
} else {
$("#Town").append("<option value=''>请选择</option>");
}
},
error: function (data) {
alert(data);
}
});
}
$(document).ready(function () {

//获取市列表
$("#Province").change(function () { getCity($(this).val()); });

//获取镇列表
$("#City").change(function () { getTown($(this).val()); });

})
</script>
<div class="editor-field">

@Html.DropDownListFor(model => model.Province, ViewBag.Province as
IEnumerable<SelectListItem>)
@Html.DropDownListFor(model => model.City, ViewData["City"] as
IEnumerable<SelectListItem>)
@Html.DropDownListFor(model => model.Town, ViewData["drdaddress"] as
IEnumerable<SelectListItem>)



@*隐藏字段用于在js调用,设置url路径*@
@Html.Hidden("GetCityList", Url.Action("GetCityList", "Sell"))
@Html.Hidden("GetTownList", Url.Action("GetTownList", "Sell"))

</div>



后台

public ActionResult MarketDetail(int MarketId, string O)
{


if (O == "edit")
{
S_MarketModel market = new S_MarketModel();
market = new MarketBll().GetMarket(MarketId);
IList<SelectListItem> Province = new List<SelectListItem>();
foreach (var dr in SettingBll.GetDictionarys(new Sys_DictionaryModel() { TableField = "S_Market-Adress", Lever = 1, ParentID = 0 }))
{
if (market.Province == dr.Value)
{
Province.Add(new SelectListItem { Selected = true, Text = dr.Name, Value = dr.Value.ToString() });
}
else
{
Province.Add(new SelectListItem { Text = dr.Name, Value = dr.Value.ToString() });
}


}
ViewBag.Province = Province;
// ViewData["Province"] = Province;
IList<SelectListItem> City = new List<SelectListItem>();
foreach (var dr in SettingBll.GetDictionarys(new Sys_DictionaryModel() { TableField = "S_Market-Adress", Lever = 2, ParentID = market.Province }))
{
if (market.City == dr.Value)
{
City.Add(new SelectListItem { Selected = true, Text = dr.Name, Value = dr.Value.ToString() });
}
else
{
City.Add(new SelectListItem { Text = dr.Name, Value = dr.Value.ToString() });
}
}
ViewData["City"] = City;
IList<SelectListItem> drdaddress = new List<SelectListItem>();
foreach (var dr in SettingBll.GetDictionarys(new Sys_DictionaryModel() { TableField = "S_Market-Adress", Lever = 3, ParentID = market.City }))
{
if (market.Town == dr.Value)
{
drdaddress.Add(new SelectListItem { Selected = true, Text = dr.Name, Value = dr.Value.ToString() });
}
else
{
drdaddress.Add(new SelectListItem { Text = dr.Name, Value = dr.Value.ToString() });
}
}
ViewData["drdaddress"] = drdaddress;
return View(market);
}
else
if (O == "dele")
{
if (new MarketBll().DeleMarket(MarketId))
{
return RedirectToAction("MarketList");

}
else
{
Response.Write("<script>alert('删除失败!');</script>");
return RedirectToAction("MarketList");
}
}
else
{

IList<SelectListItem> Province = new List<SelectListItem>();

foreach (var dr in SettingBll.GetDictionarys(new Sys_DictionaryModel() { TableField = "S_Market-Adress", Lever = 1, ParentID = 0 }))
{
Province.Add(new SelectListItem { Text = dr.Name, Value = dr.Value.ToString() });
}

ViewBag.Province = Province;
ViewData["City"] = Province;
ViewData["drdaddress"] = Province;

return View(new S_MarketModel());

}
}




三级联动是没有问题
保存也是没有问题
就是编辑信息时 只绑定最后一个下拉框的值
前两个都不赋值
...全文
199 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonwrite 2014-12-15
  • 打赏
  • 举报
回复
引用 7 楼 u011701215 的回复:
找问题的原因了 很扯的原因 @Html.DropDownListFor(model => model.Province, ViewBag.Province as IEnumerable<SelectListItem>) 前台的 model => model.Province 的 Province 不能跟 ViewBag.Province 的Province 命名一样了 ViewBag.Province 的Province 换个新的命名就好了 好扯。。。 纠结死了。。。 还好解决了
呵呵 和我之前遇到的: “那么我之前遇到一个是因为名字是Titie和ViewTitle又冲突或什么的 很奇怪的现象” 一样 不知道是bug 还是什么
luhr 2014-12-14
  • 打赏
  • 举报
回复
编辑信息时 只绑定最后一个下拉框的值 没看见编辑啊,只绑定最后一个下拉框的值是什么意思?你不是说三级联动没有问题么。。。为什么发三级联动的代码。。。
yufeiyunsui 2014-12-14
  • 打赏
  • 举报
回复
找问题的原因了 很扯的原因 @Html.DropDownListFor(model => model.Province, ViewBag.Province as IEnumerable<SelectListItem>) 前台的 model => model.Province 的 Province 不能跟 ViewBag.Province 的Province 命名一样了 ViewBag.Province 的Province 换个新的命名就好了 好扯。。。 纠结死了。。。 还好解决了
yufeiyunsui 2014-12-14
  • 打赏
  • 举报
回复
引用 4 楼 q3310017 的回复:
编辑信息时 只绑定最后一个下拉框的值 没看见编辑啊,只绑定最后一个下拉框的值是什么意思?你不是说三级联动没有问题么。。。为什么发三级联动的代码。。。
编辑就是 给省市区赋值的时候 没有赋上 联动是没问题 为了让代码全
yufeiyunsui 2014-12-14
  • 打赏
  • 举报
回复
引用 3 楼 moonwrite 的回复:
@foreach item ViewBag.Province <div>@item.Text -- @item.Selected</div> 目的 看看是否有Selected为true的 如果有 又没有赋值 那么我之前遇到一个是因为名字是Titie和ViewTitle又冲突或什么的 很奇怪的现象 另外把js去掉,看看是不是被js改变了 以上是个人经验
Selected 一直都是 false 没有从后台传过来,后台断点看的时候有 到前台就没了 ,selected 属性传不到前台 mvc ViewData 传值 肿么可以这样。。。
qq1746178060 2014-12-13
  • 打赏
  • 举报
回复
调用数据库数据实现省市区三级联动实例 //下拉框局部更新显示设置 <asp:UpdatePanel runat="server"> <ContentTemplate> <asp:DropDownList ID="ddlProvince" runat="server" AutoPostBack="True" onselectedindexchanged="ddlProvince_SelectedIndexChanged"> </asp:DropDownList> <asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="true" onselectedindexchanged="ddlCity_SelectedIndexChanged"> </asp:DropDownList> <asp:DropDownList ID="ddlArea" runat="server"> </asp:DropDownList> </ContentTemplate> </asp:UpdatePanel> //加载绑定下拉框设置 SqlConnection sqlcon; string strCon = ConfigurationManager.AppSettings["conn"]; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { sqlcon = new SqlConnection(strCon); string sqlstr = "select Province from tb_Province"; sqlcon.Open(); SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon); DataSet myds = new DataSet(); myda.Fill(myds); ddlProvince.DataSource= myds; ddlProvince.DataValueField = "Province"; ddlProvince.DataBind(); string strCity = "select * from tb_City where Province='" + ddlProvince.SelectedItem.Text + "'"; SqlDataAdapter mydaCity = new SqlDataAdapter(strCity, sqlcon); DataSet mydsCity = new DataSet(); mydaCity.Fill(mydsCity); ddlCity.DataSource = mydsCity; ddlCity.DataValueField = "City"; ddlCity.DataBind(); string strArea = "select * from tb_Area where City='" + ddlCity.SelectedItem.Text + "'"; SqlDataAdapter mydaArea = new SqlDataAdapter(strArea, sqlcon); DataSet mydsArea = new DataSet(); mydaArea.Fill(mydsArea); ddlArea.DataSource = mydsArea; ddlArea.DataValueField = "Area"; ddlArea.DataBind(); sqlcon.Close(); } //点击省联动二级显示市 protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e) { sqlcon = new SqlConnection(strCon); string sqlstr = "select * from tb_City where Province='" + ddlProvince.SelectedItem.Text + "'"; SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon); DataSet myds = new DataSet(); sqlcon.Open(); myda.Fill(myds); ddlCity.DataSource = myds; ddlCity.DataValueField = "City"; ddlCity.DataBind(); sqlcon.Close(); } //点击市联动三级显示区 protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e) { sqlcon = new SqlConnection(strCon); string sqlstr2 = "select * from tb_Area where City='" + ddlCity.SelectedItem.Text + "'"; SqlDataAdapter mysda = new SqlDataAdapter(sqlstr2, sqlcon); DataSet myds2 = new DataSet(); sqlcon.Open(); mysda.Fill(myds2); ddlArea.DataSource = myds2; ddlArea.DataValueField = "Area"; ddlArea.DataBind(); sqlcon.Close(); }
moonwrite 2014-12-13
  • 打赏
  • 举报
回复
@foreach item ViewBag.Province <div>@item.Text -- @item.Selected</div> 目的 看看是否有Selected为true的 如果有 又没有赋值 那么我之前遇到一个是因为名字是Titie和ViewTitle又冲突或什么的 很奇怪的现象 另外把js去掉,看看是不是被js改变了 以上是个人经验
yufeiyunsui 2014-12-12
  • 打赏
  • 举报
回复
mvc model 就是复制了 怎么我的没有赋值??

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧