0

私は立ち往生していて、どこから修正を開始すればよいかわからないこの人たちについて、本当にあなたの助けが必要です. したがって、ユーザーがケースとパーティーを選択できるこのフォームがあります。選択した項目の値を保存して渡すことになっています。ケースの選択は保存できましたが、選択したパーティの保存に問題があります。データの収集と保存に関する私のコード スニペットを次に示します。

コントローラ:

[HttpPost]
    [ValidateInput(false)]
    public ActionResult Create(VisitViewModel viewModel, Guid[] associatedCasesSelected, Guid[] selectedParties)
    {
        if (!ModelState.IsValid)
        {
            viewModel.Time = _timeEntryHelper.Value;
            AddLookupsToViewModel(viewModel);
            return View(viewModel);
        }
        var visitEntry = Mapper.Map<VisitViewModel, VisitEntry>(viewModel);
        visitEntry.VisitDate = _timeEntryHelper.AddTimeToDate(visitEntry.VisitDate);
        visitEntry.UserId = _currentUser.UserId;
        visitEntry.OfficeId = _currentUser.OfficeId;
        try
        {
            _visitEntryService.Create(visitEntry, associatedCasesSelected, selectedParties);
            this.FlashInfo(string.Format(Message.ConfirmationMessageCreate, Resources.Entities.Visit.EntityName));
        }
        catch (RulesException ex)
        {
            ex.CopyTo(ModelState);
        }
        if (ModelState.IsValid)
            return RedirectToAction("Edit", "Case", new { caseId = viewModel.CaseId });
        AddLookupsToViewModel(viewModel);
        return View(viewModel);
    }

VisitEntryService:

public void Create(VisitEntry visitEntry,IList<Guid>caseIds, IList<Guid>partyIds )
    {
        EnsureValid(visitEntry);
        _visitEntryRepository.Save(visitEntry);
        caseIds = AddCurrentCaseToCases(visitEntry.CaseId, caseIds,partyIds);
        foreach (var caseId in caseIds.Distinct())
        {
            var visit = new Visit {CaseId = caseId, VisitEntryId = visitEntry.VisitEntryId};
            _visitService.Create(visit);
        }
    }

VisitEntryRepository:

 public void Save(VisitEntry visitEntry)
    {
        if (visitEntry.VisitEntryId == Guid.Empty)
        {
            visitEntry.VisitEntryId = Guid.NewGuid();
            visitEntry.DateCreated = DateTime.Now;
            DataContext.VisitEntries.InsertOnSubmit(visitEntry);
        }
        else
        {
            var currentVisitEntry = Get(visitEntry.VisitEntryId);
            if (currentVisitEntry == null) throw RepositoryExceptionFactory.Create("VisitEntry", "VisitEntryId");
            currentVisitEntry.DateModified = DateTime.Now;
            currentVisitEntry.VisitDate = visitEntry.VisitDate;
            currentVisitEntry.VisitType =
                DataContext.VisitTypes.SingleOrDefault(vt => vt.VisitTypeId == visitEntry.VisitTypeId);
            currentVisitEntry.Note = visitEntry.Note;
        }
        DataContext.SubmitChanges();
    }

ケース情報と選択したケースを保存しているため、選択したパーティーを保存する方法がわかりません。フィードバックをお寄せいただきありがとうございます。

4

1 に答える 1

0

保存呼び出しは少し前に行われたため、SubmitChanges を起動した後に行った変更は、SubmitChanges を最後に移動してください。

アップデート

私が意味するのは、次のようなコードを変更して、それが役立つかどうかを確認することです

コントローラ:

[HttpPost]
[ValidateInput(false)]
public ActionResult Create(VisitViewModel viewModel, Guid[] associatedCasesSelected, Guid[] selectedParties)
{
    if (!ModelState.IsValid)
    {
        viewModel.Time = _timeEntryHelper.Value;
        AddLookupsToViewModel(viewModel);
        return View(viewModel);
    }
    var visitEntry = Mapper.Map<VisitViewModel, VisitEntry>(viewModel);
    visitEntry.VisitDate = _timeEntryHelper.AddTimeToDate(visitEntry.VisitDate);
    visitEntry.UserId = _currentUser.UserId;
    visitEntry.OfficeId = _currentUser.OfficeId;
    try
    {
        _visitEntryService.Create(visitEntry, associatedCasesSelected, selectedParties);
        this.FlashInfo(string.Format(Message.ConfirmationMessageCreate, Resources.Entities.Visit.EntityName));
        DataContext.SubmitChanges();
    }
    catch (RulesException ex)
    {
        ex.CopyTo(ModelState);
    }
    if (ModelState.IsValid)
        return RedirectToAction("Edit", "Case", new { caseId = viewModel.CaseId });
    AddLookupsToViewModel(viewModel);
    return View(viewModel);
}

VisitEntryRepository:

public void Save(VisitEntry visitEntry)
{
    if (visitEntry.VisitEntryId == Guid.Empty)
    {
        visitEntry.VisitEntryId = Guid.NewGuid();
        visitEntry.DateCreated = DateTime.Now;
        DataContext.VisitEntries.InsertOnSubmit(visitEntry);
    }
    else
    {
        var currentVisitEntry = Get(visitEntry.VisitEntryId);
        if (currentVisitEntry == null) throw RepositoryExceptionFactory.Create("VisitEntry", "VisitEntryId");
        currentVisitEntry.DateModified = DateTime.Now;
        currentVisitEntry.VisitDate = visitEntry.VisitDate;
        currentVisitEntry.VisitType =
            DataContext.VisitTypes.SingleOrDefault(vt => vt.VisitTypeId == visitEntry.VisitTypeId);
        currentVisitEntry.Note = visitEntry.Note;
    }
}
于 2012-10-11T03:01:47.153 に答える