MVC의 기본 사항을 배우려고합니다 (저는 nerddinner 자습서를 사용하고 있습니다).부분보기에서 요청을 보낼 때 오류가 발생했습니다.
I는 모델 정의 :
public class DinnerFormViewModel
{
// Properties
public Dinner Dinner { get; private set; }
public SelectList Countries { get; private set; }
// Constructor
public DinnerFormViewModel(Dinner dinner)
{
Dinner = dinner;
Countries = new SelectList(PhoneValidator.Countries, dinner.Country);
}
}
가 나는 부분도 정의 :
@model MyNerddiner.Models.DinnerFormViewModel
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Dinner</legend>
@Html.HiddenFor(model => model.Dinner.DinnerID)
<div class="editor-label">
@Html.LabelFor(model => model.Dinner.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Dinner.Title)
@Html.ValidationMessageFor(model => model.Dinner.Title)
</div>
</fieldset>
}
일반적인 관점에서로드된다
@model MyNerddiner.Models.DinnerFormViewModel
@{
ViewBag.Title = "Create";
}
<div id="Create" >
<h2>Host a Dinner</h2>
@Html.Partial("_DinnerForm")
</div>
제어기
을public ActionResult Create()
{
Dinner dinner = new Dinner()
{
EventDate = DateTime.Now.AddDays(7)
};
return View(new DinnerFormViewModel(dinner));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(DinnerFormViewModel dinnerViewModel)
{
Dinner dinner = null;
if (ModelState.IsValid)
{
try
{
dinner = dinnerViewModel.Dinner;
UpdateModel(dinner);
dinnerRepository.Add(dinner);
dinnerRepository.Save();
return RedirectToAction("Details", new { id = dinner.DinnerID });
}
catch
{
ModelState.AddRuleViolations(dinner.GetRuleViolations());
return View(dinner);
}
}
return View(new DinnerFormViewModel(dinner));
}
지금, 나는 오류 받고 있어요 (포스트 백에) 만들려고 해요 때, 어딘가에 프로그램이 DinnerFormViewModel
을 시작하려고 때문인지, 내가 추측 할 수
No parameterless constructor defined for this object.
을하지만 경우, 그리고 왜? 어떻게해야 제대로 할 수 있을까요?
DinnerFormViewModel의 매개 변수없는 생성자를 만든 후에도 동일한 오류가 발생합니다. 이제 linq 생성 클래스에서 somwhere 일어나는. – happyZZR1400
그건 그렇고 질문 : 인스턴스가 이미 첫 번째 라우팅에서 생성되었을 때 요청에서 데이터로 채울 빈 인스턴스를 만드는 이유는 무엇입니까? – happyZZR1400
인스턴스는 라우팅에서 예상되는 메소드 매개 변수와 일치하는 요청의 패턴을 찾을 때만 작성됩니다. – Maess