MVC新手请教:从XML文件获取数据绑定至DROPDOWNLIST。

zhaocheng761115 2013-10-31 01:05:49
如题:列出代码如下:
A.XML文件:

<YearTable>
<yearNumber>2005</yearNumber>
<yearNumber>2006</yearNumber>
</YearTable>

BMODEL.CS文件属性设置:

public SelectList LoadYearDataFromXml
{
get
{
try
{
DataSet ds = new DataSet();
ds.ReadXml(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/xmlData_Years.xml"));
DataTable dt = ds.Tables[0];
EnumerableRowCollection<DataRow> rows = dt.AsEnumerable();
List<DataRow> _item = rows.ToList<DataRow>();
return new SelectList(_item);
}
catch
{
return null;
}
}
}


CCONTROLLER.CS文件:

// GET: /System_MonthMaxMoneySetting/Create

public ActionResult Create()
{
System_MonthMaxMoneySetting mmms = new System_MonthMaxMoneySetting();
ViewBag.Items = mmms.LoadYearDataFromXml;
return View();
}

最后,D.CSHTML文件:

<div class="editor-field">
@Html.DropDownListFor(model => model.IYear,ViewBag.Items as SelectList)
@Html.ValidationMessageFor(model => model.IYear)
</div>


调试运行,解析后查看代码源,显示如下:

<select data-val="true" data-val-number="字段 Year 必须是一个数字。" data-val-required="Year 字段是必需的。" id="IYear" name="IYear"><option>System.Data.DataRow</option>
<option>System.Data.DataRow</option>
<option>System.Data.DataRow</option>
</select>


请教如何显示为<option>2005</option>!
...全文
142 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaocheng761115 2013-11-01
  • 打赏
  • 举报
回复
个人更喜欢你得方法,这样在VIEW中调用,绑定选中值灵活.......
zhaocheng761115 2013-11-01
  • 打赏
  • 举报
回复
感谢“wg5945”回复: 按照你的思路修改代码,遇到错误提示如下:

“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------


模型生成过程中检测到一个或多个验证错误:

\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType“SelectListItem”未定义键。请为该 EntityType 定义键。
\tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet“SelectListItems”基于未定义任何键的类型“SelectListItem”。
我用如下代码,可正常运行:
        public SelectList LoadYearDataFromXml
        {
            get
            {
                try
                {
                    DataSet ds = new DataSet();
                    ds.ReadXml(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/xmlData_Years.xml"));
                    DataTable dt = ds.Tables[0];
                    List<SelectListItem>  typeitems = new List<SelectListItem>();
                    foreach (DataRow row in dt.Rows)
                    {
                        typeitems.Add(new SelectListItem{Text = row[0].ToString(),Value = row.ItemArray[0].ToString() });
                    }
                    return new SelectList(typeitems,"Value","Text");
                }
                catch
                {
                    return null;
                }
            }
        }
wg5945 2013-10-31
  • 打赏
  • 举报
回复

        public List<SelectListItem> LoadYearDataFromXml
        {
            get
            {
                try
                {
                    DataSet ds = new DataSet();
                    ds.ReadXml(System.Web.HttpContext.Current.Server.MapPath("~/Content/A.xml"));
                    DataTable dt = ds.Tables[0];
                    EnumerableRowCollection<DataRow> rows = dt.AsEnumerable();
                    List<DataRow> item = rows.ToList();
                    return item.Select(dataRow => new SelectListItem
                    {
                        Text = dataRow[0].ToString(), Value = dataRow.ItemArray[0].ToString(),
                    }).ToList();
                }
                catch
                {
                    return null;
                }
            }
        }
zhaocheng761115 2013-10-31
  • 打赏
  • 举报
回复
还是这种思路有问题?

62,074

社区成员

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

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

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

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