请问下,在SharePoint web part中,自定义了一个属性,此属性有自己默认值.在页面上加载此web part,打开设置界面,此自定义属性可以出现.然后不作任何修改,点击保存.
请问在此情况下,这个自定义属性是否会被保存到数据库中?
PS:
如果在页面上修改了这个自定义属性的值,是可以正常保存的,所以不要怀疑是代码的问题,我只是想知道,直接点击保存会不会更新数据库?
会.实际上WebPart的自定义属性是被保存到WebPart自己本身上了,因为WebPart被添加到页面,自定义属性已经作为一个 ASP.NET 控件中的一个属性节点被保存到页面中了,页面本身是以二进制的形式存储在数据表中,所以最终还是存储在数据库中了。
谢谢你的回复.
或者我说得更具体一点:
我写了一个自定义属性:
string a = "a";
[...这里忽略一些属性]
public str A
{
get{return a;}
set{a = value;}
}
我在set这里设了一个断点,按理说web part第一次加载后, 会先跳到我这个断点,先给a付值. 但实际上没有.
但如果我是先在web part的配置里,先修改了a的值,然后点击保存, 然后我重新打开页面,这时候这会跳到我这个断点了.
请问这个现象怎么解释啊?是我哪里理解错了吗?是不是说web part在保存属性时,先会判断下,这个属性新的值跟旧的值是否相等,然后才决定更不更新这个属性到数据库?当然这只是我的猜想,我想知道有没有这方面的官方证明?
谢谢.
或者再具体点,我先写了一个web part,它里面有个属性:
string a = "a";
[...这里忽略一些属性]
public string A
{
get{return a;}
set{a = value;}
}
然后布置到服务器上了,担后来我改了这个属性的默认值:
string a = "b";
[...这里忽略一些属性]
public string A
{
get{return a;}
set{a = value;}
}
再一次部署.但我发现这A属性已经变成'b'了,后来我在set这里加了断点,它不能跳到这个断点里.
这时我在页面上打开这个web part的配置,修改了A的值等于c,然后保存.
这时,我再到我的开发环境中,再一次修改A的默认值:
string a = "d";
[...这里忽略一些属性]
public string A
{
get{return a;}
set{a = value;}
}
然后再次部署到服务器.
这时,我再打开页面,发现A的值是'c'.断点也可以跳进来,也就是说,A这个属性已经更新到数据库中去了,无论我再怎么在代码中修改a的默认值,都不会影响到已经部署到服务器上的web part的值.所以我才有这样的疑问.如果我哪理理解错了,请指正.谢谢.
Sharepoint 机制就是这样。每次点编辑,保存 都会触发webpart的pageLoad事件。