Создание выпадающего списка в ASP.NET MVC3 с использованием движка Razor - PullRequest
0 голосов
/ 31 марта 2012

Я создаю форму регистрации пользователя в ASP.NET MVC3, используя механизм просмотра бритвы.Я столкнулся с проблемой создания выпадающего списка для страны.Список стран происходит из XML-файла.

Моя иерархия проекта выглядит следующим образом

BusinessLayer -> User_Account -> Account_Registration.cs

Это библиотека классов, в которой я хочу создатьМодель для регистрации пользователя.Код для пользовательской модели выглядит следующим образом:

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, которая находится в проекте библиотеки классови как создать выпадающий список для населения страны.Спасибо

Ответы [ 2 ]

1 голос
/ 31 марта 2012

Вам, вероятно, не следует читать xml-файл каждый раз, когда вы отображаете страницу регистрации. Это было бы одним маленьким узким местом, которое у вас возникло бы, поскольку операции с жесткими дисками были дорогостоящими. Я бы порекомендовал прочитать его в память (как при запуске приложения один раз и где-нибудь в глобальной переменной, например, Страна).

Для рендеринга вашего списка, я бы рекомендовал просмотреть следующую статью. В основном это выглядит так:

 Html.DropDownList(“countries”, new SelectList(model.Countries), “CountryId”, “CountryName”))
0 голосов
/ 01 апреля 2012

вы можете создать собственное расширение для 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...