제 작성 기능을 올바르게 작동시키는 데 문제가 있습니다. SalesPerson 및 Customer 객체가있는 Order 객체를 만들려고합니다. 나는 다음과 같은 한MVC 페이지 반환 예외 생성
public class OrderViewModel
{
private sunburstdb db = new sunburstdb();
public Order originalOrder { get; set; }
public IList<SelectListItem> SalesPeopleList { get; set; }
public IList<SelectListItem> CustomersList { get; set; }
public IList<SelectListItem> OrderStatusList { get; set; }
public OrderViewModel(Order order)
{
originalOrder = order;
}
}
내 컨트롤러에서 :
이//
// GET: /Order/Create
public ActionResult Create()
{
Order order = new Order();
OrderViewModel viewModel = new OrderViewModel(order);
//IList<SelectListItem> result = new List<SelectListItem>();
viewModel.SalesPeopleList = new List<SelectListItem>();
foreach (SalesPerson person in db.SalesPeople)
{
var temp = new SelectListItem();
temp.Text = person.FullName;
temp.Value = person.ID.ToString();
viewModel.SalesPeopleList.Add(temp);
}
//viewModel.SalesPeopleList = new SelectList(result);
//result.Clear();
viewModel.CustomersList = new List<SelectListItem>();
foreach (Customer person in db.Customers)
{
var temp = new SelectListItem();
temp.Text = person.FullName;
temp.Value = person.ID.ToString();
viewModel.CustomersList.Add(temp);
}
//viewModel.CustomersList = new SelectList(result);
return View(viewModel);
}
//
// POST: /Order/Create
[HttpPost]
public ActionResult Create(Order order)
{
if (ModelState.IsValid)
{
db.Orders.Add(order);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(order);
}
마지막으로 내보기가 몇 꽤 표준입니다 그때 뷰 모델을 만들어
public class Order
{
public int ID { get; set; }
public SalesPerson SalesPerson { get; set; }
public bool PreviousWork { get; set; }
public OrderStatus Status { get; set; }
public Customer Customer { get; set; }
public List<OrderLineItem> LineItems { get; set; }
}
처럼 내 주문 모델 본다 순서대로 데이터를 채우는 필드
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Order</legend>
<div class="editor-label">
@Html.LabelFor(model => model.originalOrder.SalesPerson)
</div>
<div class="editor-field">
@Html.DropDownList("Order.SalesPerson", Model.SalesPeopleList)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.originalOrder.Customer)
</div>
<div class="editor-field">
@Html.DropDownList("Order.Customer", Model.CustomersList);
</div>
<div class="editor-label">
@Html.LabelFor(model => model.originalOrder.PreviousWork)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.originalOrder.PreviousWork)
@Html.ValidationMessageFor(model => model.originalOrder.PreviousWork)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
내가 이것을 실행하고 나는 다음을 얻을 새로운 질서 만들려고 : 사전에 전달 모델 항목 유형 'Models.Order'입니다 만,이 사전 모델 '유형의 모델 항목을 필요로 .OrderViewModel '. 어쩌면 내가 만든이 메서드는 매개 변수를 변경할 필요가 public ActionResult Create(OrderViewModel order)
그러나 내가 할 때이 오류가 있습니다 : 매개 변수가없는 생성자가이 개체에 정의 된. 누군가 내가 MVC 멍청한 놈에게 내가 뭘 잘못하고 있는지에 대한 도움을 줄 수 있습니까?
보기 상단에 @model 행이 있습니까? 그렇다면 편집하여 추가하십시오. –
예, @ 모델이 있습니다. 전체보기 파일을 포함하지 않았습니다. – azorr
Order 개체의 모든 사용자 지정 개체를 참조 된 개체의 ID를 보유하는 int 값으로 변경하여이 작업을 수행하는 방법을 알았습니다. 그런 다음 OrderViewModel에서 OrderController의 ID로 참조되는 실제 오브젝트를 채 웁니다. – azorr