RadEditor MVC Helper Sample

by Rok Bermež 8. September 2010 15:09
I was asked for RadEditor MVC helper, so here it goes (copy paste code out) : public static MvcHtmlString RadEditorFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression) where TModel : class { return RadEditorFor(htmlHelper, expression, ((IDictionary<string, object>)null)); } public static MvcHtmlString RadEditorFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes) where TModel : class { return RadEditorFor(htmlHelper, expression, new RouteValueDictionary(htmlAttributes)); } public static MvcHtmlString RadEditorFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes) where TModel : class { string name = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(ExpressionHelper.GetExpressionText((LambdaExpression)expression)); TProperty value = ExpressionHelper2.GetValue(htmlHelper, expression); return RadEditor(htmlHelper, name, value, htmlAttributes); } public static MvcHtmlString RadEditor(this HtmlHelper htmlHelper, string name) { return RadEditor(htmlHelper, name, null); } public static MvcHtmlString RadEditor(this HtmlHelper htmlHelper, string name, object value) { return RadEditor(htmlHelper, name, null, ((IDictionary<string, object>)null)); } public static MvcHtmlString RadEditor(this HtmlHelper htmlHelper, string name, object value, object htmlAttributes) { return RadEditor(htmlHelper, name, value, new RouteValueDictionary(htmlAttributes)); } public static MvcHtmlString RadEditor(this HtmlHelper htmlHelper, string name, object value, IDictionary<string, object> htmlAttributes) { if (String.IsNullOrEmpty(name)) { name = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name); if (string.IsNullOrEmpty(name)) { throw new ArgumentException("name"); } } if (htmlAttributes == null) htmlAttributes = new Dictionary<string, object>(); Page page = new Page(); RadMvcScriptManager mvcScriptManager = new RadMvcScriptManager(); mvcScriptManager.EnableViewState = false; page.Controls.Add(mvcScriptManager); RadStyleSheetManager radStyleSheetManager = new RadStyleSheetManager(); page.Controls.Add(radStyleSheetManager); //string id = name.Replace(".", "_"); RadEditor radEditor = new RadEditor(); radEditor.ID = name + "_radeditor"; radEditor.ClientIDMode = ClientIDMode.Static; radEditor.ImageManager.ContentProviderTypeName = typeof(AzureStorageFileBrowserContentProvider).AssemblyQualifiedName; radEditor.ImageManager.MaxUploadFileSize = 3000000; radEditor.ImageManager.ViewPaths = new string[] { "uploaded/images" }; radEditor.ImageManager.UploadPaths = new string[] { "uploaded/images" }; radEditor.ImageManager.DeletePaths = new string[] { "uploaded/images" }; radEditor.DocumentManager.ContentProviderTypeName = typeof(AzureStorageFileBrowserContentProvider).AssemblyQualifiedName; radEditor.DocumentManager.MaxUploadFileSize = 20000000; radEditor.DocumentManager.ViewPaths = new string[] { "uploaded/documents" }; radEditor.DocumentManager.UploadPaths = new string[] { "uploaded/documents" }; radEditor.DocumentManager.DeletePaths = new string[] { "uploaded/documents" }; radEditor.MediaManager.ContentProviderTypeName = typeof(AzureStorageFileBrowserContentProvider).AssemblyQualifiedName; radEditor.MediaManager.MaxUploadFileSize = 50000000; radEditor.MediaManager.ViewPaths = new string[] { "uploaded/media" }; radEditor.MediaManager.UploadPaths = new string[] { "uploaded/media" }; radEditor.MediaManager.DeletePaths = new string[] { "uploaded/media" }; radEditor.FlashManager.ContentProviderTypeName = typeof(AzureStorageFileBrowserContentProvider).AssemblyQualifiedName; radEditor.FlashManager.MaxUploadFileSize = 50000000; radEditor.FlashManager.ViewPaths = new string[] { "uploaded/flash" }; radEditor.FlashManager.UploadPaths = new string[] { "uploaded/flash" }; radEditor.FlashManager.DeletePaths = new string[] { "uploaded/flash" }; //radEditor.TemplateManager.ContentProviderTypeName = typeof(AzureStorageFileBrowserContentProvider).AssemblyQualifiedName; radEditor.TemplateManager.MaxUploadFileSize = 500000; radEditor.TemplateManager.ViewPaths = new string[] { "~/content/templates" }; radEditor.NewLineBr = false; radEditor.Skin = "Vista"; //radEditor.ToolsFile = "~/Content/administracija/EditorToolbar.xml"; if (htmlAttributes.ContainsKey("ToolsFile")) radEditor.ToolsFile = htmlAttributes["ToolsFile"] as string; UIHintControlParameterDataAnnotationsModelMetadata mmd = (UIHintControlParameterDataAnnotationsModelMetadata)htmlHelper.ViewData.ModelMetadata; if (mmd.TemplateControlParameterExist("ToolBar")) { radEditor.ToolsFile = mmd.GetTemplateControlParameter<string>("ToolBar"); } if (mmd.TemplateControlParameterExist("DisableHtmlFormating") && mmd.GetTemplateControlParameter<bool>("DisableHtmlFormating")) { radEditor.StripFormattingOptions = EditorStripFormattingOptions.None; radEditor.DisableFilter(Telerik.Web.UI.EditorFilters.ConvertToXhtml); } if (value != null) radEditor.Content = value as string; radEditor.DialogHandlerUrl = "/Telerik.Web.UI.DialogHandler.axd"; page.Controls.Add(radEditor); StringWriter output = new StringWriter(); HttpContext.Current.Server.Execute(page, output, false); return MvcHtmlString.Create(htmlHelper.Hidden("", "ToBeReplaced").ToString() + output.ToString()); }

Tags:

.Net | c# | Web

Telerik ASP.NET AJAX Controls in MVC project Part ||

by Rok Bermež 3. September 2010 15:09
Telerik Reporting used in ASP.NET MVC [More]

Tags:

.Net | c# | ASP.NET | Web

Telerik ASP.NET AJAX Controls in MVC project

by Rok Bermež 18. August 2010 14:37
If we want to use Telerik ASP.NET AJAX controls in MVC project, we must also use either ScriptManager or RadScriptManager. But since neither works very well here is more MVC friendly solution: public class RadMvcScriptManager : RadScriptManager { static string JavaScriptBlockFormat = @"<script type=""text/javascript"">//<![CDATA[ {0}//]]></script>"; protected override void Render(HtmlTextWriter writer) { foreach (RegisteredScript script in GetRegisteredClientScriptBlocks()) { if (HttpContext.Current.Items[script.Key] == null) { HttpContext.Current.Items[script.Key] = true; if (script.ScriptType == RegisteredScriptType.ClientScriptInclude) { writer.WriteLine(String.Format(@"<script type=""text/javascript"" src=""{0}""></script>", HttpUtility.HtmlEncode(script.Url))); } } } if (HttpContext.Current.Items["AppInitialize"] == null) { Page.Items["AppInitialize"] = true; writer.WriteLine( String.Format( JavaScriptBlockFormat, @"if(typeof(Sys) != ""undefined""){ $addHandler(window, ""load"", function(){Sys.Application.initialize();}); } else { throw new Error(""Microsoft ASP.NET AJAX cannot be initialized!"")}")); } StringBuilder builder = new StringBuilder(); if (HasReflectionPermission()) { SerializeScriptsForScriptControls(Page, builder); } string scriptContent = builder.ToString(); if (!String.IsNullOrEmpty(scriptContent)) { writer.WriteLine(String.Format( JavaScriptBlockFormat, String.Format("Sys.Application.add_init(function(){{{0}}});", scriptContent))); } } internal void SerializeScriptsForScriptControls(Control control, StringBuilder builder) { if (control is IScriptControl && control.Visible) { IEnumerable<ScriptDescriptor> descriptors = ((IScriptControl)control).GetScriptDescriptors(); if (descriptors != null) { foreach (ScriptDescriptor descriptor in descriptors) { SerializeScriptControlDescriptor(descriptor, builder); } } } if (control.HasControls()) { foreach (Control child in control.Controls) { SerializeScriptsForScriptControls(child, builder); } } } internal void SerializeScriptControlDescriptor(ScriptDescriptor descriptor, StringBuilder builder) { MethodInfo getScriptInfo = descriptor.GetType().GetMethod( "GetScript", BindingFlags.Instance | BindingFlags.NonPublic); if (getScriptInfo != null) { string script = (string)getScriptInfo.Invoke(descriptor, new object[] { }); builder.AppendLine(script); } } internal static bool HasReflectionPermission() { try { new ReflectionPermission(ReflectionPermissionFlag.MemberAccess).Demand(); return true; } catch (SecurityException) { return false; } } }

Tags:

.Net | c# | Web

Dealing with Error 404 on IIS7 using ASP.NET Routing

by Rok Bermež 15. June 2010 09:06
When you're deploying an ASP.NET website that uses the new Routing feature from MVC, you might run i [More]

Tags:

.Net | ASP.NET | IIS | Administration | Development | Web

Windows Azure SDK (1.2) is available

by Rok Bermež 7. June 2010 18:46
Yeeey, finally .net 4 support in the cloud! Also: Visual Studio 2010 RTM Support: Full support for Visual Studio 2010 RTM. .NET 4 support: Choose to build services targeting either the .NET 3.5 or .NET 4 framework. Cloud storage explorer: Displays a read-only view of Windows Azure tables and blob containers through Server Explorer. Integrated deployment: Deploy services directly from Visual Studio by selecting ‘Publish’ from Solution Explorer. Service monitoring: Keep track of the state of your services through the ‘compute’ node in Server Explorer. IntelliTrace support for services running in the cloud: Adds support for debugging services in the cloud by using the Visual Studio 2010 IntelliTrace feature. This is enabled by using the deployment feature, and logs are retrieved through Server Explorer.  Read more here. and download ASAP here.

Tags:

.Net | Azure

Calendar

<<  January 2018  >>
MonTueWedThuFriSatSun
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar

Page List

Month List