Таблица Продукт
Код товара
Наименование продукта
Стол Поставщик
SupplierID
Код товара
SupplierName
Когда я создаю новый продукт, я хочу иметь текстовое поле для ввода поставщика в том же виде. Это хорошая практика? Поскольку у продукта может быть много поставщиков, я хочу иметь возможность добавлять больше записей о поставщиках из одного представления. Как мне это сделать ?
Я пытаюсь выяснить, что я помещаю на страницу aspx?
Если я добавлю что-то вроде <% = Html.TextBoxFor (model => model.Supplier)%>, я вижу текстовое поле с System.Data.Objects.DataClasses.EntityCollection`1 [MyProject.Mvc.Models.Supplier] в это.
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<MyProject.Mvc.Models.ProductFormViewModel>" %>
<%= Html.ValidationSummary("Please correct the errors and try again.") %>
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%= Html.LabelFor(model => model.Product.ProductId) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Product.ProductId) %>
<%= Html.ValidationMessageFor(model => model.Product.ProductId) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.Product.ProductName) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Product.ProductName) %>
<%= Html.ValidationMessageFor(model => model.Product.ProductName) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.Product.Description) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Product.Description) %>
<%= Html.ValidationMessageFor(model => model.Product.Description) %>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
ProductViewModel
public class ProductFormViewModel
{
public Product Product{ get; private set; }
public IEnumerable<Supplier> Supplier { get; private set; }
public ProductFormViewModel()
{
Product = new Product();
}
public ProductFormViewModel(Product product)
{
Product = product;
Supplier = product.Supplier;
}
}