2013-07-15 3 views
0

В моем mvc3 приложении я хочу, чтобы заполнить DropDownList для данных, которые наступающие из базы данных здесь я использую entityframework с базой данных первым подходом так, пожалуйста, помогите мне сделать этоСоздания выпадающего списка с базой данных первого

+0

Это не достаточно информации для предоставления вам помочь. Попытайтесь прочитать документацию msdn о DropDownFor: http://msdn.microsoft.com/en-us/library/system.web.mvc.html.selectextensions.dropdownlistfor(v=vs.108).aspx –

+0

Вам необходимо предоставить некоторые образец кода. Мы хотим видеть, что вы сделали сами по себе, чтобы мы могли помочь исправить и сообщить о вашем коде. Не ожидайте полного решения здесь из ничего. –

+0

Вы делаете таблицу в базе данных, затем вызываете эту таблицу в entityframework, а затем создаете контроллер.? Это так, как вы это делаете? Пожалуйста, уточните больше, чтобы мы могли вам помочь. – bot

ответ

1

Вы не сделали предоставить любой код того, что вы сделали до сих пор, поэтому я ничего не знаю о данных, с которыми вы работали. Я отправлю код, и все, что вам нужно сделать, это изменить его, чтобы он соответствовал вашему сценарию.

Позволяет работать с простым решением кредитных заявок. Клиент должен подать заявку на получение кредита, и ему необходимо предоставить банковские реквизиты. Он должен будет выбрать банк из выпадающего списка.

Давайте начнем с модели домена под названием Bank. Это означает, что ваши данные поступают из вашей таблицы базы данных. Позволяет вызвать таблицу Banks.

public class Bank 
{ 
    public int Id { get; set; } 

    public string Name { get; set; } 
} 

Ваш стол называется Banks будет выглядеть следующим образом:

Id | int | not null | primary key 
Name | varchar(50) | not null 

Depeneding на вас то, что вам нужно сделать, я обычно есть сервисный слой, который вызывает мое хранилище банка, чтобы вернуть данные. Но, видя, что вам нужно только вернуть данные, и ничто другое, мы не можем пропустить уровень сервиса.

public class BankRepository : RepositoryBase<Bank>, IBankRepository 
{ 
    public IEnumerable<Bank> FindAll() 
    { 
      return DatabaseContext.Banks; 
    } 
} 

контекст базы данных Вы будет выглядеть следующим образом:

public class DatabaseContext : DbContext 
{ 
    public DbSet<Bank> Banks { get; set; } 
} 

Это, как ваши методы извлечения данных может выглядеть следующим образом. Возможно, это не полное решение, но есть много примеров онлайн. Просто пойдите и Google.

Переход на веб-приложение.

Ваш просмотр/страница будет работать с моделью просмотра, а не с моделью вашего домена. Модели представления используются для представления ваших данных на странице просмотра/страницы. Таким образом, на вашем представлении создания вы перейдете в модель представления приложения для приложения со списком своих банков. Экземпляр IBankRepository будет поставляться с помощью технологии, называемой инъекцией зависимостей. Для этого я использую Autofac.

public class ApplicationViewModel 
{ 
    public int BankId { get; set; } 

    public IEnumerable<Bank> Banks { get; set; } 
} 

Метод действия вашего контроллера заполняет модель обзора и отправляет ее на ваш просмотр.

public class ApplicationController : Controller 
{ 
    private readonly IBankRepository bankRepository; 

    public ApplicationController(IBankRepository bankRepository) 
    { 
      this.bankRepository = bankRepository; 
    } 

    public ActionResult Create() 
    { 
      ApplicationViewModel viewModel = new ApplicationViewModel 
      { 
       Banks = bankRepository.FindAll() 
      }; 

      return View(viewModel); 
    } 
} 

Ваше представление затем получит эту модель просмотра и сделает с ней то, что ей нужно. В этом случае он закроет ваш банк.

@model YourProject.ViewModels.Applications.ApplicationViewModel 

@using (Html.BeginForm()) 
{ 
    <tr> 
      <td class="edit-label">Bank: <span class="required">**</span></td> 
      <td> 
       @Html.DropDownListFor(
        x => x.BankId, 
        new SelectList(Model.Banks, "Id", "Name", Model.BankId), 
        "-- Select --" 
       ) 
       @Html.ValidationMessageFor(x => x.BankId) 
      </td> 
    </tr> 
} 

Я не знаю, что ваш опыт, но судя по вашему вопросу, кажется, что вам все еще нужно много исследований. Есть примеры примеров в Интернете. Вам нужно будет проработать образцы Entity Framework code first и ASP.NET MVC. Потратьте некоторое время, и вы пожертвуете наградами позже.

Надеюсь, это сработает и удачи. Решение может быть не таким, каким вы хотите, но оно может помочь вам в правильном направлении.

+0

Теперь это всеобъемлющий ответ, Привет! –

0

Пусть Предположим, у вас есть класс, как так

public class ProductBrand 
    { 
     //Eg. Nokia, Hp, Dell 
     /// <summary> 
     /// Second Level to Category 
     /// Has Foreign Key to category table 
     /// </summary> 
     [Key]  
     [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int ProductBrandId { get; set; } 

     [Display(Name = "Category")] 
     public int ProductCategoryId { get; set; } 
     public virtual ProductCategory ProductCategory { get; set; } 

     [Required(ErrorMessage = "This field is required")] 
     [StringLength(300, ErrorMessage = "This field must not be greater than 300 xters long")] 
     [Display(Name="Name")] 
     public string BrandName { get; set; } 

     public IList<Product> Products { get; set; } 

     [Display(Name = "Status")] 
     public bool ActiveStatus { get; set; } 


    } 

Что означает эта модель имеет внешний ключ имя ProductCategoryId затем в вашем создания продукта зрения бренда вы будете нуждаться в DropDownList, содержащий все productcategory на выбор.

Просто создайте ActionResult как так

public ActionResult CreateProductBrand() { 

      ViewBag.ProductCategoryId = new SelectList(context.ProductCategories, "ProductCategoryId", "CategoryName"); 
      return View(); 
     } 

Затем вызовите viewbag в вас corrensponding вид следующим образом:

@using (Html.BeginForm()) { 
     @Html.AntiForgeryToken() 
     @Html.ValidationSummary(true) 


      <table style="width:400px" class="post-form"> 
       <tr> 
        <td>Category</td> 
        <td> 
         <div class="editor-field"> 

          @Html.DropDownList("ProductCategoryId", String.Empty) 
          @Html.ValidationMessageFor(model => model.ProductCategoryId) 
         </div> 
        </td> 
       </tr> 
      </table> 
     <table style="width:400px" class="post-form"> 
       <tr> 
        <td>Brand</td> 
        <td> 
         <div class="editor-field"> 
          @Html.EditorFor(model => model.BrandName) 
          @Html.ValidationMessageFor(model => model.BrandName) 
         </div> 
        </td> 
       </tr> 
       <tr> 
        <td>Status</td> 
        <td> 

         <div class="editor-field"> 
          @Html.EditorFor(model => model.ActiveStatus) 
          @Html.ValidationMessageFor(model => model.ActiveStatus) 
         </div> 
        </td> 
       </tr> 
       <tr> 
        <td></td> 
        <td> 
         <input type="submit" class="button blue" value="Save" /> 
         <a href="@Url.Action("ProductBrand", "ProductSetup")" class="button">Cancel 
         </a> 
        </td> 
       </tr> 
      </table> 


    } 
0

ViewModel:

public List<Item> _Items { get; set; } 
    public int_newID { get; set; } 

Модель Item

public int_id { get; set; } 
    public string _name { get; set; } 

Контроллер: Populate _Items с данными и отправить этот список на ваш взгляд

Вид:

@Html.DropDownListFor(c => c._newID, new SelectList(Model._Items , "_id", "_name"),--Select Item--") 
Смежные вопросы