我正在開發一個umbraco項目,這是一個非常陡峭的學習曲線,對於v7和mvc來說,似乎沒有太多好的文檔。umbraco客戶端分頁和訂購
我已經建立了一個簡單的項目列表與分頁和排序使用查詢字符串ling。不是特別好。我想制定一個方法來製作所有這些客戶端,以及umbraco中的選項和最佳實踐。
感謝任何幫助。
在此先感謝
理查德
我正在開發一個umbraco項目,這是一個非常陡峭的學習曲線,對於v7和mvc來說,似乎沒有太多好的文檔。umbraco客戶端分頁和訂購
我已經建立了一個簡單的項目列表與分頁和排序使用查詢字符串ling。不是特別好。我想制定一個方法來製作所有這些客戶端,以及umbraco中的選項和最佳實踐。
感謝任何幫助。
在此先感謝
理查德
有很多方法可以做到這一點,這裏是一個簡單的問題。總之,我建議使用由ajax調用的「Surface Controller」,然後相應地操作DOM。
這裏是一個樣品表面控制器(我有一堆無用usings的存在...):
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>
}
}
現在Normal模板,似乎已經有的也可以稱爲這部分。該模板還必須基於每個頁面和東西的計數和項目來顯示頁面按鈕。但後來基本上,當一個頁面按鈕運行,在運行一些JavaScript與此類似:
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 AJAX郵報「/一把umbraco /面/」,控制器創建擴展「Umbraco.Web。 Mvc.SurfaceController「將在那裏訪問。非常方便的Ajax電話。這個JavaScript將阻止你的頁面重新加載,保持客戶端的東西,但仍然使用服務器端獲得你想要的內容。從這裏你可以添加很多功能和驗證。
這裏是一個頁面按鈕:
<a href="javascript: void(0);" onclick="GetPage(3, Model.Content.Id)">Page 3</a>
希望這有助於你用一把umbraco工作,我認爲這是一個非常強大的產品。