привет, приятель, я искал это много, и я не мог его найти, но, наконец, я сам его закодировал.
Я постараюсь рассказать вам, как я решил эту проблему и отлично работает, как ур скриншот. вот мой secreenshot
здесь моя категория модель, она почти то же самое с ур модель
public class Category
{
public int ID { get; set; }
public string CategoryName { get; set; }
public int? ParentID { get; set; }
[ForeignKey("ParentID")]
public virtual ICollection<Category> SubCategories { get; set; }
}
тогда я создал модель Просмотр категории как этот
public class ViewModelCategory
{
public Category Category { get; set; }
public List<SelectListItem> Categories { get; set; }
public List<SelectListItem> ChildCategories { get; set; }
public List<SelectListItem> AllCategories
{
get
{
List<SelectListItem> sli = new List<SelectListItem>();
foreach (SelectListItem item in Categories)
{
sli.Add(item);
}
foreach (SelectListItem item in ChildCategories)
{
int i = item.Text.IndexOf(">");
string text = item.Text.Substring(0, i-1);
foreach (SelectListItem listItem in ChildCategories)
{
int k = listItem.Text.LastIndexOf(">");
string text2 = listItem.Text.Substring(k+1);
if (text2.Contains(text))
{
item.Text = listItem.Text + " > " + item.Text.Substring(i+2);
}
}
sli.Add(item);
}
return sli;
}
}
}
мои коды могут выглядеть немного усложненными, но на самом деле это не так.
есть что-то важное в моей модели ViewModelCategory, когда вы посмотрите на модель u, увидите 3 свойства selectlistitem. Я хочу поговорить об этом в первую очередь.
Я создал один из них, называемый «Категории» для основных категорий, который не имеет никакого значения родительского идентификатора. Вторая из них, называемая «ChildCategories», содержит только подкатегории, которые имеют значение родительского идентификатора
, когда вы посмотрите на коды контроллера u, вы увидите уже.
и последний из названных «AllCategories». это один из важных, я объединил все категории в этом свойстве, чтобы отправить категории в dropdownlis для просмотра контроллера. но это не только для этого, я также сделал что-то важное в этом свойстве, в то время как я слил их, когда и посмотрю на петли, и увижу это.я использовал петлю для размещения категории для своих родителей
затем использовал мою ViewModelCategory модель контроллера, как этого
ViewModelCategory vmc = new ViewModelCategory
{
Category = category,
Categories = _businessCategories.GetItems().Where(x => x.ParentID == null).Select(x => new SelectListItem
{
Text = x.CategoryName,
Value = x.ID.ToString()
}).ToList(),
ChildCategories = _businessCategories.GetItems().Where(x=>x.ParentID != null).Select(x => new SelectListItem
{
Text = _businessCategories.GetItems().Where(a => a.ID == x.ParentID).FirstOrDefault().CategoryName + " > " + x.CategoryName,
Value = x.ID.ToString()
}).ToList(),
};
и, наконец, я приветствовал мои ДАННЫЕ из поля зрения, как этот
<div class="form-group">
<label class="col-sm-4 control-label">Sub Category</label>
<div class="col-sm-8">
@Html.DropDownListFor(model => model.Category.ParentID, Model.AllCategories.OrderBy(x=>x.Text), "Select Category", new {@class = "form-control"})
@Html.ValidationMessageFor(model => model.Category.ParentID)
</div>
</div>
Надеюсь, вам понравится, что у вас будет хороший день
Что вам нужно, чтобы значение каждого элемента было? – bsayegh
@bsayegh, я не понимаю, что вы подразумеваете под «Что вы хотите, чтобы ценность каждого элемента была?». Я хочу вернуть запрос, чтобы заполнить выпадающий список в этом формате, например. Идентификатор категории -> Идентификатор категории родителя. – uikrosoft