Я создал форму, чтобы добавить клиента. Я сделал страницу клиента с помощью Viewmodel. Просмотрите класс модели следующим образом:
public class CustomerViewModel
{
public IEnumerable<MemberShipType> MemberShipTypes { get; set; }
public Customer Customers { get; set; }
}
public class Customer
{
[Display(Name ="Customer ID")]
public int CustomerId { get; set; }
[Required(ErrorMessage = "Please enter customer name")]
[StringLength(255)]
[Display(Name ="Customer Name")]
public string CustomerName { get; set; }
public MemberShipType MemberShipType { get; set; }
[Required(ErrorMessage = "Please select membership type")]
[Display(Name = "Membership Type")]
public byte MembershipTypeId { get; set; }
}
public class MemberShipType
{
[Display(Name ="Membership Id")]
public byte Id { get; set; }
[Required]
[Display(Name = "Subscription Plan")]
public string Name { get; set; }
}
После добавления этого класса мы создали действие для сохранения данных формы клиента с использованием одного класса модели (не viewModel)
Я создал форму клиента с помощьюViewmodel для отображения с данными типа членства.
Интерфейс прекрасно отображается с помощью приведенного ниже кода. Но я не могу получить данные модели в методе действия.
Если я напрямую использую модель представления в данных действия, это нормально. Проблема должна сопоставить все свойства модели представления с конкретной моделью.
Требуется больше времени для сопоставления свойств модели каждый раз.
Может ли кто-нибудь знать, как напрямую использовать метод добавления структуры объекта с клиентской моделью (модель не для просмотра)
@using (Html.BeginForm("Save", "Customer", FormMethod.Post))
{
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(m => m.Customers.CustomerName, htmlAttributes:
new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(m => m.Customers.CustomerName,
new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(m => m.Customers.CustomerName, "",
new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Customers.MembershipTypeId, htmlAttributes:
new { @class = "control-label col-md-2" })
<div class="col-lg-10">
@Html.DropDownListFor(m => m.Customers.MembershipTypeId,
new SelectList(Model.MemberShipTypes, "Id", "Name"),
"Please Select", new {@class = "form-control"})
@Html.ValidationMessageFor(m => m.Customers.MembershipTypeId,
"",
new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<input type="reset" value="Reset" class="btn btn-default" />
<button type="submit" class="btn btn-primary">Save</button>
</div>
</div>
</div>
}
Модель действий ниже всегда возвращает нуль.
[System.Web.Mvc.HttpPost]
public ActionResult Save(Customer customer)
{
if (customer.CustomerId == 0)
{
_context.Customer.Add(customer);
_context.SaveChanges();
}
}
Я получаю, что модель Customer является нулевой. Если я передам customerViewModel данные поступают. Может кто-нибудь знает ответ о том, как напрямую получить данные в классе модели?