Я очень новичок в этой структуре MVC и пытаюсь выяснить очень простую операцию. Заполните раскрывающийся список из базы данных. Мне удалось получить список значений из БД, но по какой-то причине не удалось получить отдельный список. Вот мой пример кодаASP.Net MVC Population dropdown из базы данных с отличными значениями
public class HomeController : Controller
{
private PlanContext _context = new PlanContext();
public ActionResult Index()
{
var query = _context.Categories.Select(m => new { m.ID }).Distinct();
ViewBag.CategoryID = new SelectList(query.AsEnumerable(), "ID", "ID");
return View();
}
}
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<p>
Select a Category:<%= Html.DropDownList("ID", (SelectList) ViewBag.CategoryID, "---Select One---") %>
</p>
</asp:Content>
public class PlanContext : DbContext
{
public DbSet<Category> Categories { get; set; }
}
[Table("vCategory")]
public class Category : IEquatable<Category>
{
[Column("CategoryID")]
public int ID { get; set; }
public bool Equals(Category other)
{
//Check whether the compared object is null.
if (Object.ReferenceEquals(other, null)) return false;
//Check whether the compared object references the same data.
if (Object.ReferenceEquals(this, other)) return true;
return ID == other.ID;
}
public override int GetHashCode()
{
return ID.GetHashCode();
}
}
В моем выпадающем списке всегда есть несколько элементов с одинаковым значением идентификатора. В таблице есть повторяющиеся значения, но я пытаюсь просто заполнить DDL с помощью Distinct.
Благодарим за помощь.
Джавид
спасибо. В моем случае в таблице, которую я пытаюсь запросить, есть две категории столбцов и продукт. Мне нужно получить список отдельных категорий. В этом случае, как я могу определить объект, который сопоставляется с таблицей с несколькими столбцами, но мой объект имеет только один столбец как свойство? – user320587
@ user320587: Это невозможно. Каков первичный ключ в таблице базы данных? 'ProductId' или' CategoryId' + 'ProductId' (составной ключ)? Вам необходимо сопоставить этот ключ базы данных с ключом в вашем классе модели. – Slauma
Спасибо. В представлении в БД нет ПК, так как большая часть моей работы только для чтения. В моем EF я обозначил два столбца как «Ключ» для создания композита и, похоже, работает нормально. Большое спасибо за Вашу помощь. – user320587