Я использую функцию привязки модели asp.net для привязки значений формы к моей сущности при публикации из представления.
HTML отображается правильно в начальном представлении с правильными параметрами и значениями элементов.
При заполнении формы и публикации все значения правильно вводятся в сущность, кроме значения из раскрывающегося списка. не уверен, что я делаю не так.
код прилагается ниже:
Клиент:
public class Customer : EntityBase
{
public virtual string Name { get; set; }
public virtual string Email { get; set; }
public virtual string Mobile { get; set; }
public virtual Store LocalStore { get; set; }
public virtual DateTime? DateOfBirth { get; set; }
public Customer(){}
public Customer(string name, string email, string mobile, Store localStore):this(name, email, mobile, localStore, null)
{
}
public Customer(string name, string email, string mobile, Store localStore, DateTime? dateOfBirth)
{
Name = name;
Email = email;
Mobile = mobile;
LocalStore = localStore;
DateOfBirth = dateOfBirth;
}
}
ViewModel:
public class CustomerViewModel {
// Properties
private IStoreRepository _StoreRepository;
public Customer Customer { get; private set; }
public SelectList Stores { get; private set; }
// Constructor
public CustomerViewModel(IStoreRepository storeRepository, Customer customer)
{
_StoreRepository = storeRepository;
Customer = customer;
Stores = new SelectList(_StoreRepository.GetAllStores(), "Id", "Name", Customer.LocalStore.Id);
}
}
Контроллер:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Prefix="")]Customer customer)
{
return View(new CustomerViewModel(_StoreRepository, customer));
}
Вид:
<%@ Import Namespace="BlackDiamond.Buzz.MVCWeb.Controllers"%>
<%@ Import Namespace="BlackDiamond.Buzz.Core"%>
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CustomerViewModel>" %>
<%
Customer customer = ViewData.Model.Customer;
using (Html.BeginForm())
{
%>
<table>
<tr>
<td>Local Store:</td>
<td><%= Html.DropDownList("LocalStore", ViewData.Model.Stores)%></td>
</tr>
<tr>
<td>Name:</td><td><%= Html.TextBox("Name", customer.Name)%></td>
</tr>
<tr>
<td>Email:</td><td><%= Html.TextBox("Email", customer.Email)%></td>
</tr>
<tr>
<td>Mobile:</td><td><%= Html.TextBox("Mobile", customer.Mobile)%></td>
</tr>
</table>
<input type="submit" value="Create" />
<%}%>