Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Web/Web/UI
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv15243
Modified Files:
Page.cs UserControl.cs
Log Message:
SPRNET-913 - Add convenience method in Spring.Web.UI.Page/UserControl to navigate to a Result using a user provided object for result expression evaluation
SPRNET-914 : Add convenience method to get the Spring.Web.UI.Page Result as a url
Index: Page.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Web/Web/UI/Page.cs,v
retrieving revision 1.88
retrieving revision 1.89
diff -C2 -d -r1.88 -r1.89
*** Page.cs 19 Mar 2008 12:07:15 -0000 1.88
--- Page.cs 3 Apr 2008 04:32:29 -0000 1.89
***************
*** 1092,1096 ****
protected internal void SetResult(string resultName)
{
! Result result = (Result) Results[resultName];
if (result == null)
{
--- 1092,1141 ----
protected internal void SetResult(string resultName)
{
! GetResult(resultName).Navigate(this);
! }
!
!
! /// <summary>
! /// Redirects user to a URL mapped to specified result name.
! /// </summary>
! /// <param name="resultName">Name of the result.</param>
! /// <param name="context">The context to use for evaluating the SpEL expression in the Result.</param>
! protected internal void SetResult(string resultName, object context)
! {
! GetResult(resultName).Navigate(context);
! }
!
!
! /// <summary>
! /// Returns a redirect url string that points to the
! /// <see cref="Spring.Web.Support.Result.TargetPage"/> defined by this
! /// result evaluated using this Page for expression
! /// </summary>
! /// <param name="resultName">Name of the result.</param>
! /// <returns>A redirect url string.</returns>
! protected internal string GetResultUrl(string resultName)
! {
! Result result = GetResult(resultName);
! return ResolveUrl(result.GetRedirectUri(this));
! }
!
! /// <summary>
! /// Returns a redirect url string that points to the
! /// <see cref="Spring.Web.Support.Result.TargetPage"/> defined by this
! /// result evaluated using this Page for expression
! /// </summary>
! /// <param name="resultName">Name of the result.</param>
! /// <param name="context">The context to use for evaluating the SpEL expression in the Result</param>
! /// <returns>A redirect url string.</returns>
! protected internal string GetResultUrl(string resultName, object context)
! {
! Result result = GetResult(resultName);
! return ResolveUrl(result.GetRedirectUri(context));
! }
!
!
! private Result GetResult(string resultName)
! {
! Result result = (Result)Results[resultName];
if (result == null)
{
***************
*** 1098,1105 ****
string.Format("No URL mapping found for the specified result '{0}'.", resultName), "resultName");
}
!
! result.Navigate(this);
}
#endregion
--- 1143,1151 ----
string.Format("No URL mapping found for the specified result '{0}'.", resultName), "resultName");
}
! return result;
}
+
+
#endregion
***************
*** 1617,1620 ****
--- 1663,1667 ----
#endregion Dependency Injection Support
+
}
}
\ No newline at end of file
Index: UserControl.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Web/Web/UI/UserControl.cs,v
retrieving revision 1.52
retrieving revision 1.53
diff -C2 -d -r1.52 -r1.53
*** UserControl.cs 19 Mar 2008 12:07:15 -0000 1.52
--- UserControl.cs 3 Apr 2008 04:32:29 -0000 1.53
***************
*** 547,550 ****
--- 547,577 ----
}
+ protected void SetResult(string resultName, object context)
+ {
+ Result result = (Result)Results[resultName];
+ if (result == null)
+ {
+ // bubble up result in the hierarchy
+ Control parent = this.Parent;
+ while (parent != null)
+ {
+ if (parent is UserControl)
+ {
+ ((UserControl)parent).SetResult(resultName, context);
+ return;
+ }
+ else if (parent is Page)
+ {
+ ((Page)parent).SetResult(resultName, context);
+ return;
+ }
+ parent = parent.Parent;
+ }
+ throw new ArgumentException(string.Format("No URL mapping found for the specified result '{0}'.", resultName), "resultName");
+ }
+
+ result.Navigate(context);
+ }
+
#endregion
|