我正在使用razor视图引擎在ASP.NET MVC3中创建用户注册表单。我正面临着为国家创建下拉列表的问题。国家/地区列表来自xml文件。
我的项目层次结构如下
BusinessLayer - > User_Account - > Account_Registration.cs
这是一个类库,我想在其中创建一个用于用户注册的Model。用户模型的代码如下
public class Account_Registration
{
public string User_Name { get; set; }
public string User_EmailID { get; set; }
public string User_Password { get; set; }
public string User_RePassword { get; set; }
public DateTime User_BirthDate { get; set; }
public enum_Gender User_Gender { get; set; }
public string User_Address { get; set; }
public string User_City { get; set; }
public string User_State { get; set; }
public IEnumerable<SelectListItem> User_Country { get; set; }
public string User_WebSite { get; set; }
public string User_Description { get; set; }
}
现在我想知道我应该放置国家XML文件的位置,以及如何为XML文件创建下拉列表。 我的Xml文件如下
<countries>
<country code="AF" iso="4">Afghanistan</country>
<country code="AL" iso="8">Albania</country>
<country code="DZ" iso="12">Algeria</country>
</countries>
因为我必须在IIS上部署这个项目所以我想知道我应该在哪里放置xml文件,以便我可以在类库项目中的Account_Registration模型中访问它,以及如何为人口国家创建下拉列表。 感谢
答案 0 :(得分:1)
每次渲染注册页面时,您可能都不应该阅读xml文件。由于硬盘操作成本很高,这将是您遇到的一个小瓶颈。我建议将其读入内存(例如在应用程序启动时将其读入全局变量,例如国家/地区)。
为了呈现您的列表,我建议您查看following文章。基本上,它是这样的:
Html.DropDownList(“countries”, new SelectList(model.Countries), “CountryId”, “CountryName”))
答案 1 :(得分:0)
您可以为DropDown创建自己的扩展程序。
public static class GridExtensions
{
public static MvcHtmlString XmlDropDown(this HtmlHelper helper, string name, string value)
{
var document = XDocument.Parce(value);
var model = new List<SelectListItem>();
foreach(XElement element in document.Elements("countries/country"))
{
model.Add(new SelectListItem(){Text=element.Value, Value=element.Attribute("iso").Value})
}
return Html.DropDownList(name, model))
}
}
所以,在视图中你可以使用
Html.XmlDropDown(“countries”, model.Countries)