我在这一行代码上有点困惑
var cs = ApplicationContext.Current.Services.ContentService.GetById(1000);
cs.GetValue("test");
var nd = new Node(1000);
nd.GetProperty("test");
这两个代码都可以使用..这两个代码有什么不同..我们何时以及为什么使用其中任何一个
答案 0 :(得分:2)
在剃刀或前端代码中,始终使用UmbracoHelper
<?php
$output .= '
<tr class="datas">
<td class="id" data-id10="'.$row["id"].'" contenteditable>'.$row["id"].'</td>
<td class="firstname" data-id1="'.$row["id"].'" contenteditable>'.$row["firstname"].'</td>
<td class="middlename" data-id2="'.$row["id"].'" contenteditable>'.$row["middlename"].'</td>
<td class="lastname" data-id3="'.$row["id"].'" contenteditable>'.$row["lastname"].'</td>
<td class="address" data-id4="'.$row["id"].'" contenteditable>'.$row["address"].'</td>
<td class="gender" data-id5="'.$row["id"].'" contenteditable>
<select onchange="getval(this)">' . $row["gender"] == "Male" ? '<option value="Male" selected>Male</option><option value="Female">Female</option>' : '<option value="Male">Male</option><option value="Female" selected>Female</option>' . '</select>
</td>
<td class="contact" data-id6="'.$row["id"].'" contenteditable>'.$row["contact"].'</td>
<td class="username" data-id7="'.$row["id"].'" contenteditable>'.$row["username"].'</td>
<td class="password" data-id8="'.$row["id"].'" contenteditable>'.$row["password"].'</td>
<td class="but"><button type="button" name="delete_btn" id="delete_btn" data-id9="'.$row["id"].'" class="btn btn-xs btn-danger btn_delete">DELETE</button>
<button type="button" name="delete_btn" id="update_btn" data-id12="'.$row["id"].'">UPDATE</button>
</td>
</tr>';
这将查询已发布节点
的缓存您希望使用ContentService调用来查询数据库,例如,如果您需要有关未发布节点的信息(您不希望在视图中执行此操作)
使用Node对象查询可能是遗留的(我从未使用过它)
答案 1 :(得分:2)
Umbraco服务
umbraco 6中引入的新umbraco API的服务层包括ContentService,MediaService,DataTypeService和LocalizationService。查看umbraco documentation以获取有关这些服务和其他umbraco服务的文档。
umbraco中的服务访问了数据库,并没有利用umbraco提供的所有缓存。你应该谨慎使用这些服务。如果您尝试以编程方式从数据库添加/更新/删除,或者如果您尝试从数据库中获取未发布的内容,则应使用这些服务。如果您只需查询已发布的内容,则应使用UmbracoHelper,因为它更快。
var cs = ApplicationContext.Current.Services.ContentService.GetById(1000);
cs.GetValue("test");
<强> UmbracoHelper 强>
当你想从umbraco查询内容时,你应该几乎总是使用UmbracoHelper。它没有打到数据库,而且比umbraco服务快得多。
var node = Umbraco.TypedContent(1000);
var nodeVal = node.GetPropertyValue<string>("test");
如果您发现自己无法访问UmbracoHelper,只要您拥有UmbracoContext,就可以自行创建:
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var node = Umbraco.TypedContent(1000);
var nodeVal = node.GetPropertyValue<string>("test");
<强> NodeFactory 强>
NodeFactory已过时。如果您使用Umbraco 6或更高版本,我强烈建议您转换为UmbracoHelper。
var nd = new Node(1000);
nd.GetProperty("test");