ViewModel을 사용하여 DB에 새 항목을 만듭니다. ViewModel에는 사용자가 설정할 수있는 속성 만 있고 게시되면 다시 만듭니다. 새로운 '실제'객체를 저장하고 DB에 저장하십시오.원하지 않는 기본값을 설정하여 ViewModel을 사용하여 항목 만들기
[HttpGet]
public ActionResult Create(int id = 0)
{
var opt = unitOfWork.OptionRepository.GetByID(id);
CreateAvailabilityViewModel model = new CreateAvailabilityViewModel();
model.OptionDescription = opt.Description;
model.CentreCode = opt.CentreCode;
model.OptionID = id;
return View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(CreateAvailabilityViewModel cavm)
{
if (ModelState.IsValid)
{
OptionAvailability newOA = new OptionAvailability();
DateTime now = DateTime.Now;
newOA.ChangedDate = newOA.CreatedDate = now;
newOA.ChangedBy = newOA.CreatedBy = User.Identity.Name;
newOA.DateFrom = cavm.DateFrom;
newOA.DateTo = cavm.DateTo;
newOA.MinNumbers = cavm.MinNumbers;
newOA.MaxNumbers = cavm.MaxNumbers;
newOA.OptionID = cavm.OptionID;
unitOfWork.OptionAvailabilityRepository.Insert(newOA);
unitOfWork.Save();
return RedirectToAction("Detail", "Option", new { id = newOA.OptionID });
}
return View(cavm);
}
아래에 설명이이 뷰 모델
public class CreateAvailabilityViewModel
{
[HiddenInput(DisplayValue = false)]
public int OptionAvailabilityID { get; set; }
[HiddenInput(DisplayValue = false)]
public int OptionID { get; set; }
[Required]
public DateTime DateFrom { get; set; }
[Required]
public DateTime DateTo { get; set; }
[Required]
public int MinNumbers { get; set; }
[Required]
public int MaxNumbers { get; set; }
public string CentreCode { get; set; }
public string OptionDescription { get; set; }
}
내가 직면하고있는 문제는 그 형태가 날짜를 양식 필드를 렌더링 할 때와 같이
나는이 일을하고있다 ints는 기본값 인 01/01/0001이고 공백이 아닌 0입니다. Html.EditorFor 도우미를 사용하여 입력을 렌더링하는 중입니다. HttpGet Create 메서드에서 ViewModel을 인스턴스화 할 때 형식 기본값을 사용하고 폼에 개체를 통해 전달하기 때문에 가정합니다. 그러나 이것은 아닙니다. 무슨 일이 일어나고 싶습니까?이 속성들을 DateTime?
및/또는 int?
으로 설정해야합니까?
나는이 사용하는 것이 좋습니다 확신하지만 조금 사람이 내가 muchly
안녕하세요, 감사합니다,하지만 난 모든 기본을 가지고 싶지 않아 .. 달성이 아닙니다 ? – nat
nullable ...으로 속성을 설정하는 것 외에도 ... – nat
적절한 날짜/datetime 컨트롤은 물론 브라우저에 따라 다르며 내가 알 수있는 한 date> datetime에 대한 적절한 기본값은 약간 흐릿합니다. null/공백이 의미 상으로 유효한지 여부). 이 시점에서 접근법은 예측할 수 없을 것입니다. 바닐라 텍스트 입력을 출력하는 경우 페이지가로드 될 때 javascript를 사용하여 값을 지울 수 있습니다. 별도의 GET/POST 뷰 모델은 과도한 것처럼 보입니다. –