asp.net-mvc-2 강좌 - VaryByParam을 여러 매개 변수와 함께 사용하려면 어떻게해야합니까?




패턴 frombody (2)

ASP.NET MVC2에서는 OutputCacheVaryByParam 특성을 사용합니다. 단일 매개 변수를 사용하여 올바르게 작동하게했지만 메서드에 여러 매개 변수가있을 때 올바른 구문은 무엇입니까?

[OutputCache(Duration=30, VaryByParam = "customerId"]
public ActionResult Index(int customerId)
{
//I've got this one under control, since it only has one parameter
}

[OutputCache(Duration=30, VaryByParam = "customerId"]
public ActionResult Index(int customerId, int languageId)
{
//What is the correct syntax for VaryByParam now that I have a second parameter?
}

두 매개 변수를 사용하여 페이지를 캐시하려면 어떻게합니까? 속성을 두 번 추가 하시겠습니까? 또는 "customerId, languageId"를 값으로 씁니다.


Answers

모든 매개 변수에 대해 * 또는 세미콜론으로 구분 된 목록 ( VaryByParam = "customerId;languageId" )을 사용할 수 있습니다.

다른 버전을 캐시하지 않으려면 none을 사용할 수도 있습니다 ....

다음은 MVC 전용으로 작성된 좋은 예 입니다.


  • 숨겨진 필드 :

    <% using (Html.BeginForm<SomeController>(c=>c.SomeAction(null))) {%>
      <%= Html.Hidden("SomeField", Model.SomeField)%>
      <%= Html.Hidden("AnotherField", Model.AnotherField)%>
    
  • 특정 모델을 설정하고 명시 적 필드가없는 경우 (숨겨진 필드 제공). 아래 예제에서 컨트롤러는 마지막 게시물에서받은 값으로 모델을 채 웁니다. 따라서 상태에 따라 필터링 할 수있는 페이지의 no js 옵션이 활성화됩니다.

    Some Filter: <% using( Html.BeginForm<SomeController>(
            c => c.SomeAction(model.SomeField, model.AnotherField, model.YetAnotherField, null, model.SomeOtherField)
            )) { %>
                <%= Html.DropDownList("status", Model.StatusSelectList)%>
                <input type="submit" value="Filter" class="button" />
                <% } %>
    
  • 제출 된 양식에 실패한 유효성 검사 메시지가 표시 될 때 게시 된 값으로 필드를 채우려면 확장 메서드를 사용하여 필드를 만듭니다.
  • asp.net mvc 2에서 그들은 숨겨진 필드에 인스턴스를 저장하는 방법을 도입했습니다 ... encoded + (나는 생각합니다)
  • 위의 모든것이 그것을하지 않으면 TempData (세션을 거치며 다음 요청에서 정리 됨)
  • 앞서 언급했듯이, 아약스를 사용할 때 상태는 이미 클라이언트 사이트의 이전에로드 된 필드에 있습니다. 전체 게시물을 작성해야하는 경우, 필요한 필드를 업데이트하십시오.

위의 내용은 서로 다른 시나리오에서 사용할 수있는 모든 독립적 인 옵션입니다. 내가 쿠키, 세션, db에 물건을 저장 (재개 가능한 다중 단계 마법사와 같이), 작업에 전달 된 매개 변수 등을 언급하지 않은 옵션이 더 있습니다. 그 (것)들을 전부 지배하기 위하여 1 개의 단 하나 기계 장치가없고, 있으면 안된다.





asp.net-mvc-2 outputcache