2014-02-27 3 views
0

나는 매우 가파른 학습 곡선이었던 umbraco 프로젝트에서 일하고 있는데, 특히 v7과 mvc에 대해서는별로 좋은 문서가없는 것 같습니다.umbraco clientside 페이지 매김과 순서

나는 쿼리 문자열과 함께 ling을 사용하여 페이지 매김과 순서가있는 간단한 항목 목록을 만들었습니다. 별로 좋지 않습니다. 나는이 모든 고객을 만드는 방법과 옵션이 무엇인지, 모범 사례는 umbraco 안에서 이루어질 수있는 방법을 찾고 싶습니다.

감사의 뜻을 표합니다. 사전에

덕분에

리처드

답변

0

이 작업을 수행하는 방법에는 여러 가지가 있으며, 여기에 간단한 하나입니다. 요약하면 ajax에서 호출하는 "Surface Controller"를 사용하여 DOM을 적절하게 조작하는 것이 좋습니다.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Globalization; 
using System.Net; 
using System.Web.Http; 
using System.Web.Mvc; 
using System.Web.Configuration; 
using System.IO; 
using Newtonsoft.Json; 
using System.Text; 
using Umbraco.Web; // AncestorOrSelf 
using Umbraco.Core; // FindIndex 
using Umbraco.Core.Models; 

namespace MyFunWebsite.SurfaceControllers 
{ 
    public class MyFunSCController : Umbraco.Web.Mvc.SurfaceController 
    { 
     [System.Web.Mvc.HttpPost] 
     public ActionResult GetPage() { 

      // Pick up params 
      var pageNumber = -1; 
      if (!int.TryParse(Request.Params["pageNumber"], out pageNumber)) 
      { 
       pageNumber = -1; 
      } 

      var parentNodeId = -1; 
      if (!int.TryParse(Request.Params["parentNodeId"], out parentNodeId)) 
      { 
       parentNodeId = -1; 
      } 

      if (parentNodeId == -1 || pageNumber == -1) 
      { 
       return Content("no - invalid parentNodeId or pageNumber"); 
      } 

      var itemsPerPage = 10; 

      var parentNode = Umbraco.TypedContent(parentNodeId); 

      var nodes = parentNode.Children.Skip(itemsPerPage * pageNumber).Take(itemsPerPage); 

      ViewBag.specialViewBagInformation = "Fun with Umbraco"; 
      ViewBag.nodes = nodes; 

      return PartialView("Partials/MyListingOfNodes"); 

     } 
    } 
} 

그런 다음 부분보기는 다음과 같이 간다 :

@using Umbraco.Core;  
@{ 
    var nodes = (IEnumerable<IPublishedContent>)ViewBag.nodes; 
    foreach (var node in nodes) { 
     <div>title: @node.AsDynamic().title</div> 
    } 
} 

을 이제 기본 서식 여기

은 샘플 표면 컨트롤러 (나는 ...이 쓸모없는 using이 잔뜩 가지고)입니다 , 이미 가지고있는 것처럼 보이는 부분도이 부분이라고 부를 수 있습니다. 이 템플릿은 페이지 당 개수와 항목을 기반으로 페이지 버튼을 표시해야합니다. 페이지 버튼 실행, 당신이 몇 가지 자바 스크립트와 유사한 실행할 때하지만 기본적으로 : "/ Umbraco/표면 /"컨트롤러를

function GetPage(pageNumber, parendNodeId) { 
    $.ajax({ 
     type: "POST", 
     url: "/Umbraco/Surface/MyFunSCController/GetPage/", 
     data: "pageNumber=" + pageNumber + "&parentNodeId=" + parentNodeId, 
     cache: false, 
     dataType: "text", 
     success: function (result) { 
      $("#myFunTable").html(result); 
     }, 
     error: function (result) { 
      // console.log("Ajax error: " + result); 
     } 
    }); 
} 

공지의 URL 아약스 게시물을 당신은이 "Umbraco.Web을 확장 만들 수 있습니다. Mvc.SurfaceController "에 액세스 할 수 있습니다. 아주 아약스 전화에 대한 convinient. 이 javascript는 귀하의 페이지가 다시로드해야하는 것을 막아 주며 클라이언트 측의 일을 유지하면서도 서버 측을 사용하여 원하는 컨텐츠를 얻습니다. 여기에서 많은 기능과 유효성 검사를 추가 할 수 있습니다. 여기

가 페이지 버튼입니다 :

<a href="javascript: void(0);" onclick="GetPage(3, Model.Content.Id)">Page 3</a> 

희망이 도움이 Umbraco와 함께 작동, 나는 그것이 매우 강력한 제품 생각합니다.

관련 문제