扩展Html.DropDownList出现的问题??

qingYun1029 2014-08-22 04:05:49
公司有扩展方法,扩展Html.DropDownList 结合Bootstrap插件使用,比如处理状态的时候,只需要枚举出状态类型,如下:

public enum YesOrNo
{
[Description("否")]
False = 0,
[Description("是")]
True = 1
}


然后在编辑页面,直接:
@Html.EnumDropDownListBlockFor(m => m.BaseCompany.DELETE_MARK, typeof(StatusEnum), "col-lg-3 col-md-3 col-sm-3 col-xs-3")
就可以根据“m.BaseCompany.DELETE_MARK”提供的值,默认帮你选中枚举中的项,问题来了,之所以能实现,因为Model中的BaseCompany的数据类型为decimal,当模型为bool类型的时候,扩展方法就不起作用了。
扩展方法没有什么内容,只是一些判断,所以代码就不贴了,贴一下扩展用到的View代码吧,如下:

@model object
@{
this.Layout = null;
string propertyExpression = ViewBag.PropertyName;
string containerClass = ViewBag.ContainerClass;

Type enumType = ViewBag.EnumType;
var dict = XXY.Common.Extends.EnumHelper.GetDescriptions(enumType);

var value = ModelMetadata.FromStringExpression(propertyExpression, ViewData);

var items = dict.Select(d => new SelectListItem()
{
Text = d.Value,
Value = ((int)Enum.Parse(enumType, d.Key, true)).ToString(),
Selected = value != null && value.Model != null ? value.Model.ToString().ToLower() == d.Key.ToString().ToLower() : false
});

RouteValueDictionary htmlAttributes = ViewBag.HtmlAttributes ?? new RouteValueDictionary();
if (htmlAttributes["class"] != null) {
htmlAttributes["class"] = string.Format("{0} {1}", htmlAttributes["class"], "form-control input-sm col-lg-2 col-md-2 col-xs-2");
} else {
htmlAttributes.Add("class", "form-control input-sm");
}
}

@helper Star() {
if (ViewBag.IsRequired) {
<span class="red">*</span>
}
}

<div class="@containerClass">
<span class="help-block">@ViewBag.DisplayName @Star()</span>
@Html.DropDownList(propertyExpression, items, htmlAttributes)
</div>



页面展示如下:


默认设置两个Model中两个字段的类型分别为 true,false,可显示效果还是这样,当将代码
@Html.DropDownList(propertyExpression, items, htmlAttributes) 中的“propertyExpression”换成“aa”时,就可以显示正确的结果,但是看生成的源文件的时候,这两个字段的id都被渲染成了 “aa”

请问这是什么问题??
...全文
111 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxi_2388316574 2014-08-25
  • 打赏
  • 举报
回复
设置DropDownList实现商品是否销售 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { int ID=int.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString()); bool PaperState = bool.Parse(((DropDownList)GridView1.Rows[e.RowIndex].FindControl("ddlSellState")).SelectedValue); string strsql = "UPDATE tb_OrderForm SET 是否停售 = @SellState WHERE 产品编号= @ID"; SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); conn.Open(); SqlCommand comm = new SqlCommand(strsql, conn); comm.Parameters.Add(new SqlParameter("@ID", SqlDbType.Int, 4)); comm.Parameters["@ID"].Value = ID; comm.Parameters.Add(new SqlParameter("@SellState", SqlDbType.Bit, 1)); comm.Parameters["@SellState"].Value = PaperState; if (Convert.ToInt32(comm.ExecuteNonQuery()) > 0) { Response.Write("<script language=javascript>alert('设置成功!');location='Default.aspx'</script>"); } else { Response.Write("<script language=javascript>alert('设置失败!');location='Default.aspx'</script>"); } //取消编辑操作 GridView1.EditIndex = -1; //调用自定义方法DbBind()重新绑定GridView控件中信息 DbBind(); }
qingYun1029 2014-08-24
  • 打赏
  • 举报
回复
太凄凉了,一个人都没有。。。哎。。。
qingYun1029 2014-08-22
  • 打赏
  • 举报
回复
如有问题,欢迎追问,想知道这是个啥子情况!!!

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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