2
public ActionResult Index(int ehrId, int? page)
{
EHR ehr = ehrRepository.FindById(ehrId);
if (ehr.UserName != User.Identity.Name)
return View("Invalid Owner");
var physicaltests = ehr.PhysicalTests.Where(test=>!test.IsDeleted).OrderByDescending(test => test.CreationDate);
List<PhysicalTestListItem> physicalTestsVM = new List<PhysicalTestListItem>();
Mapper.Map(physicaltests, physicalTestsVM);
var paginatedTests = physicalTestsVM.ToPagedList(page ?? 0, PAGESIZE);// new PaginatedList<PhysicalTestListItem>(physicalTestsVM, page ?? 0, pageSize);
return View(paginatedTests);
}
public ActionResult Create(int ehrId)
{
EHR ehr = ehrRepository.FindById(ehrId);
if (ehr.UserName != User.Identity.Name)
return View("Invalid Owner");
return View(new PhysicalTestForm());
}
我的PhysicalTestsController
執行前執行了這三行代碼,絕對是我所有的方法。我如何重構這個以避免這麼多的重複?我只包括了兩種方法,但實際上有六種方法。此代碼是否適合ActionFilter?
學到的是需要反射來獲取ehrId如果您使用的行爲過濾器? – BZink
@BZink - 沒有反射不需要TMK,但是增加了複雜性,您必須從ActionExecutedContext或ActionExecutingContext中檢索值來檢索動作參數(在本例中爲ehrId)。 –
感謝您的非常完整的答案..我一定要儘可能多地學習...你會介意分享一些代碼,以便我有一個想法,我可以使這個actionFilter的工作?..是沒關係的參考資料庫裏面的actionfilter ?.在此先感謝 – ignaciofuentes