无法使用Session.CustomActionData设置属性值。
if (s.CustomActionData.ContainsKey(PropertyName0))
s.CustomActionData[PropertyName0] = "1";
else
s.CustomActionData.Add(PropertyName0, "1");
虽然此代码有效,但当自定义操作结束时,属性保持不变。 那么我该如何设置属性值呢? 我需要在一个自定义操作中设置属性值,然后在另一个自定义操作中读取它。
答案 0 :(得分:2)
目前尚不清楚你在做什么。 延迟自定义操作中只有少数属性可用。您是否尝试将数据传递给延迟的自定义操作?
如果在运行时需要,可以编写立即自定义操作来编写属性,然后将这些操作传递给延迟自定义操作。
以下是即时CA的示例
[CustomAction]
public static ActionResult ImmediateCA(Session session)
{
CustomActionData data = new CustomActionData();
data["property1"] = "abc";
data["property2"] = "def";
session["myDeferredCAData"] = data.ToString();
return ActionResult.Success;
}
[CustomAction]
public static ActionResult myDeferredCA(Session session)
{
CustomActionData data = session.CustomActionData;
string property1 = data["property1"];
return ActionResult.Success;
}
此解决方案由Nick Ramirez提出
答案 1 :(得分:1)
您是否正在使用托管代码?我知道我在获取C ++ CA以获取属性并在一个CA中更新属性时遇到了麻烦。在过去,我已经在一个CA中写入了注册表并从中读取到另一个CA中的属性以解决此问题。
答案 2 :(得分:0)
无法在延迟的自定义操作中设置属性。 http://msdn.microsoft.com/en-us/library/aa370543(v=VS.85).aspx