현재 선택된 아이템 ID를 확인하고 편집 페이지의 드롭 다운리스트에 이전 선택된 아이템을 표시하려고합니다. 항목은 활성 상태를 기반으로 표시됩니다. 모든 활성 항목이 드롭 다운에 표시되고 사용자에 대한 이전 선택 선택 사항이 현재 비활성 상태 인 경우 이전에 선택한 항목이므로 드롭 다운 목록에서 해당 항목을 기본값으로 사용해야합니다. 내 문제는 내가 편집 페이지에서 사용자가 선택한 비활성 항목을 표시 할 수 없다는 것입니다. 내 모든 코드를 게시 할 예정이 다른 링크 질문 질문의 연속이다 : CONTROLLER에 passing null parameters체크리스트 아이템 ID
내 코드 : CONTROLLER에
private IEnumerable<SearchItems> GetItems(ItemDescriptionFormViewModel viewModel = null)
{
if(viewModel == null)
viewModel = new AppointmentViewModel();
IOrderedQueryable<ItemDescription> items= _itemDescriptionRepository.FindAll().OrderBy(
c => c.Sort == null).ThenBy(
c => c.Sort).ThenBy(c => c.Description);
if(items.Count()==0)
ModelState.AddModelError("", string.Format("No active {0} entered.", Kids.Resources.Entities.ItemDescription.EntityNamePlural));
return
_itemDescriptionRepository.FindAll().OrderBy(c => c.Description).Where(a=>a.IsActive == true || a.ItemDescriptionId == viewModel.ItemDescriptionId).Select(
c => new SearchItems {Text = c.Description, Value = c.ItemDescriptionId.ToString()});
}
내 편집 방법 :
[HttpGet]
[AppointmentAuthorization]
public ActionResult Edit(Guid appointmentId)
{
Appointment appointment = _appointmentService.Get(appointmentId);
if (appointment == null) return View("NotFound");
var viewModel = new AppointmentViewModel
{
AppointmentId = appointment.AppointmentId,
};
viewModel.Items= GetItems();
return this.RazorView("Edit", viewModel);
}
무언가가 누락되어 viewModel을 매개 변수로 전달하는 것처럼 보입니다. viewModel.Items = GetItems()가별로하지 않았습니다. 또한 편집을위한 다른 Post 메서드와 CreateItems() 메서드를 호출하는 Create 메서드가 있습니다. 어떤 도움이 될 것입니다. 감사합니다 :
public IEnumberable<SearchItems> Items {get; set;}
public Guid ItemDescriptionid {get; set;}
작성 방법 :
[HttpGet]
[AppointmentAuthorization]
public ActionResult Create(Guid caseId)
{
var viewModel = new AppointmentViewModel
{
Items= GetItems()
};
return this.RazorView("Create", viewModel);
}
***** 솔루션 *****
private IEnumerable<SearchItems> GetItems(Appointment appointment)
{
IEnumerable<short?> itemDescriptionIds =
appointment.AppointmentItems.Where(c => c.ItemDescriptionId.HasValue).Select(
c => c.ItemDescriptionId).Distinct();
IOrderedQueryable<ItemDescription> itemDescription =
_itemDescriptionRepository.FindAll().Where(
a => a.IsActive == true || itemDescriptionIds.Contains(a.ItemDescriptionId)).OrderBy(
d => d.Description);
return itemDescription.Select(c=> new SearchItems{Text = c.Description, Value = c.ItemDescriptionId.ToString()});
}
D
이 내가 내 뷰 모델 클래스에있는 것입니다
viewModel에서 appointmentId를 초기화합니다. 이것은 오타입니까? ViewModel에 AppointmentId가 없다고합니다. – DMulligan
내 나쁜 ... 나는 그것이 문제의 일부가 아니라고 생각하고 그것을 추가하지 않았다. startDate와 getItems를 다루지 않는 것들을 제거했습니다. 그러나 예 appointmentId가 초기화됩니다. – Masriyah
내 요점은 당신이 당신의 viewmodel에있는 itemdescriptionid가 아니라 appointmentId를 설정했다는 것입니다. – DMulligan