내가 나에게 URL을 제공하는 헬퍼 클래스가 URL을 얻으려면 ...
이 도우미 메서드는 때때로에 호출 데이터베이스는 .. 내가 컨트롤러의 페이지에 필요한 모든 URL을 생성하고 뷰에게 전달해야의 분리에 따르면 ..
을
을 URL을 생성하거나 그것의 URL을 생성하는 괜찮습니다 보기?
감사
내가 나에게 URL을 제공하는 헬퍼 클래스가 URL을 얻으려면 ...
이 도우미 메서드는 때때로에 호출 데이터베이스는 .. 내가 컨트롤러의 페이지에 필요한 모든 URL을 생성하고 뷰에게 전달해야의 분리에 따르면 ..
을
을 URL을 생성하거나 그것의 URL을 생성하는 괜찮습니다 보기?
감사
매트 제어기만큼 간단하게 유지되어야한다. 여기
작은 팁입니다 : outloud을 말을하는 것입니다, 때로는 나에게 도움이 무엇 당신은 당신의 코드에 대해 생각언제 그리고 당신이 outloud 말할 수 (두려움은 미치광이 :-)처럼 보이기에도 불구하고) "생성", "생성", "파괴"- 대부분 컨트롤러에서이 작업을 수행해야합니다. "유효성 검사", "데이터", "복잡한 검색"과 관련하여 코드 조각을 생각하는 경우 대부분 모델에 오프로드해야합니다. 잘 생각한다면이 양식은 5 픽셀 이상이거나 그 버튼이 초록색이어야합니다 -보기입니다.
때로는 혼동을 줄 수 있습니다. 다음은 최근 프로젝트의 예입니다. 특정 부분을 관리자에게 표시하고 일부는 사용자에게 표시하려는 경우 두 가지 방법이 있습니다. 하나는 사용 권한에 따라 컨트롤러에 다른 레이아웃을로드하는 것이며, 다른 하나는보기를 통과 할 때 사용 권한을 확인하는 것입니다. 둘 다 장점이 있습니다. 첫 번째는 mvc가 더 많지만 코드 중복을 만들 것이고 두 번째 방식은 복잡하지 않고 mvc가 적지 만 코드는 계속 DRYer로 유지합니다. 또한 두 번째 접근법을 사용하는 세 번째 접근법이 있습니다. 단 하나의 레이아웃 만 가지지 만 부분 배치로의 이중화 또는 삼중 뷰를 갖는 어려운 부분은 모두 오프로드해야합니다.
희망이 있습니다.
URL을 생성하는 프로세스가 (모델과 상호 작용) 꽤 복잡한 보인다 나는 그들이 컨트롤러에서 생성 될 전망이다. 제 생각
이 뷰는이 경우에 가능내 0.02 $ : 여기 우려 문제의 실제 분리는 DB가 같은 방법 및 생성 URI를 호출하고있다. DB 호출을 컨트롤러에 넣고 뷰에서 URI를 생성하십시오. 이런 식으로 뭔가 :
컨트롤러 :
// stuff
var importantNum = (from d in Repository.SomeData
where d.Id == id
select new
{
Num = d.ImportantForUri
}).First().Num;
var model.LinkData = new RouteValueDictionary { { "Important", importantNum" },
{ "Constant", "Foo"} // etc
};
return View(model);
보기 :
<!-- stuff -->
<%= Html.ActionLink("Hi there", "ActionName", model.LinkData);
동의해야
- 플레이가 가능한 한 단순해야한다. 모든 로직은 컨트롤러에 있거나 컨트롤러가 호출해야하는 서비스 (비즈니스 로직)가 있습니다. –
... 그것 뿐이다 +1 – bytebender