[CLOSED] html tag in text content breaks app

  1. #1

    [CLOSED] html tag in text content breaks app

    Hi everyone,

    I'm trying to build an asset managment tool.

    Left: category navigation by tree.
    Top: asset navigation by grid.
    Bottom: editor pane, inside a FormPanel.

    The problem I'm having is that when I load an asset whose name and description contain html tags in the text, my app fails. Otherwise it functions as designed.

    Specifically, after clicking the Bollay row in my grid, the directmethod fires and the TextFields in the form are loaded. However after that client clicks are not handled - clicking on a category does nothing, clicking on an asset does nothing. Not sure why, any help would be appreciated.

    Problem data:

    AssetCategory { "AssetCategoryID" : "3", "Name" : "Client Alerts", "Description" : "Client Alert Assets" }
    Asset { "AssetID" : "154", "Name" : "<i>Bollay v. California Office of Administrative Law</i>: State Agency Policies Asset Main", "Description" : "<i>Bollay v. California Office of Administrative Law</i>: State Agency Policies Asset Description", "AssetCategoryID" : "3", "ExpirationDate" : "2011-07-02 10:46:36.910" }
    Assets.aspx:
     
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Assets.aspx.cs" Inherits="LW4.WWW.Admin.Web.Assets" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title></title> 
    <style type="text/css">
    #PanelFrame > .x-panel-header
    {
    background-image: url(Images/panelHeaderBackgroung-DarkBlue.png);
    color: White;
    }
    </style> 
    </head>
    <body>
    <ext:ResourceManager runat="server" ID="ResourceManager1" />
    <form id="form1" runat="server">
    <ext:Viewport runat="server" ID="ViewportMain" StyleSpec="background-color: #DFE8F6;" Layout="Fit">
    <Items>
    <ext:Panel runat="server" ID="PanelFrame" Layout="Border" Title="Asset Library">
    <Items>
    <ext:Panel runat="server" ID="PanelNavigation" Title="Navigation" Region="West" Width="200px" Margins="4 0 4 4" Split="true" Collapsible="true">
    <Items>
    <ext:TreePanel runat="server" ID="TreeNavigation" Border="false" />
    </Items>
    </ext:Panel>
    <ext:Panel runat="server" ID="PanelContent" Region="Center" Margins="4 4 4 0" Split="true" Layout="Border" Border="false">
    <Items>
    <ext:Panel runat="server" ID="PanelList" Title="Assets" Region="North" Split="true" Layout="Fit" Height="240">
    <Items>
    <ext:GridPanel runat="server" ID="GridAssets" StripeRows="true" TrackMouseOver="true" AutoExpandColumn="Description" Border="false">
    <Store>
    <ext:Store runat="server" ID="AssetStore">
    <Reader>
    <ext:JsonReader>
    <Fields>
    <ext:RecordField Name="AssetID" />
    <ext:RecordField Name="Name" />
    <ext:RecordField Name="Description" />
    <ext:RecordField Name="ExpirationDate" Type="Date" DateFormat="c" />
    </Fields>
    </ext:JsonReader>
    </Reader>
    </ext:Store>
    </Store>
    <ColumnModel>
    <Columns>
    <ext:Column ColumnID="AssetID" Header="Asset ID" DataIndex="AssetID" Hidden="true" />
    <ext:Column ColumnID="Name" Header="Name" DataIndex="Name" Width="500" />
    <ext:Column ColumnID="Description" Header="Description" DataIndex="Description" />
    <ext:Column ColumnID="Expiration" Header="Expiration" DataIndex="ExpirationDate">
    <Renderer Fn="Ext.util.Format.dateRenderer('m/d/Y')" />
    </ext:Column>
    </Columns>
    </ColumnModel>
    <SelectionModel>
    <ext:RowSelectionModel runat="server" SingleSelect="true" />
    </SelectionModel>
    <Listeners>
    <RowClick Handler="Ext.net.DirectMethods.RowClick(item.getSelectionModel().getSelected().data.AssetID);" />
    </Listeners>
    </ext:GridPanel>
    </Items>
    </ext:Panel>
    <ext:Panel runat="server" ID="PanelEditor" Region="Center" Split="true" Layout="Fit">
    <Items>
    <ext:FormPanel runat="server" ID="FormEditor" Padding="8" ButtonAlign="Right" Border="false" MonitorValid="true" Visible="false">
    <Items>
    <ext:TextField runat="server" ID="txtName" FieldLabel="Name" Anchor="95%" MaxLength="100" />
    <ext:TextField runat="server" ID="txtDesc" FieldLabel="Description" Anchor="95%" MaxLength="500" />
    </Items>
    <Buttons>
    <ext:Button runat="server" ID="btnSave" Text="Save">
    <Listeners>
    <Click Handler="Ext.net.DirectMethods.SubmitForm();" />
    </Listeners>
    </ext:Button>
    </Buttons>
    </ext:FormPanel>
    </Items> 
    </ext:Panel>
    </Items>
    </ext:Panel> 
    </Items>
    </ext:Panel>
    </Items>
    </ext:Viewport>
     
    </form>
    </body>
    </html>
    Assets.aspx.cs:
     
    using System;
    using Ext.Net;
    using LW2.Utilities;
    namespace LW4.WWW.Admin.Web
    {
    public partial class Assets : System.Web.UI.Page
    {
    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
    if (!X.IsAjaxRequest)
    {
    LoadTree();
    }
    }
    #endregion
    #region LoadTree
    private void LoadTree()
    {
    TreeNode root = new TreeNode("Categories");
    root.Expanded = true;
    TreeNavigation.Root.Add(root);
    AssetCategoryCollection allAssetCategories = DBAccessor.AssetCategories.GetAllAssetCategories();
    foreach (AssetCategory category in allAssetCategories)
    {
    TreeNode categoryNode = new TreeNode(category.Name, Icon.Images);
    categoryNode.NodeID = category.AssetCategoryID.Value.ToString();
    categoryNode.Listeners.Click.Handler = "Ext.net.DirectMethods.NodeClick(node.id);";
    root.Nodes.Add(categoryNode);
    } 
    }
    #endregion
    #region NodeClick
    [DirectMethod]
    public void NodeClick(string id)
    {
    try
    {
    int categoryID = int.Parse(id);
    AssetCollection assets = DBAccessor.Assets.GetAssetsByCategory(categoryID);
    assets.Sort(Asset.SortByName);
    AssetStore.DataSource = assets;
    AssetStore.DataBind(); 
    }
    catch (Exception ex)
    {
    InstanceLog.WriteLog(ex);
    }
    finally
    {
    PanelList.UpdateContent();
     
    // Clear editor form
    FormEditor.Visible = false;
    PanelEditor.UpdateContent();
    }
    }
    #endregion
    #region RowClick
    [DirectMethod]
    public void RowClick(int AssetID)
    {
    Asset asset = DBAccessor.Assets.GetAsset(AssetID);
     
    // TODO: Hydrate Form
    txtName.Text = asset.Name;
    txtDesc.Text = asset.Description;
     
     
     
    FormEditor.Visible = true;
    PanelEditor.UpdateContent();
    }
    #endregion
    #region SubmitForm
    [DirectMethod]
    public void SubmitForm()
    {
    }
    #endregion
    }
    }
    Last edited by Daniil; May 18, 2011 at 7:25 PM. Reason: [CLOSED]
  2. #2
    Hi,

    Unfortunately, I can't run the sample you posted because it's depends on database. So, I can't check the following thoughts.

    Please try to:

    1. Use Hidden="true" instead of Visible="false" for FormPanel in the markup.

    2. Respectively replace
    FormEditor.Visible = false;
    appearances with
    FormEditor.Hidden = true;
    and otherwise.

    3. And remove
    PanelEditor.UpdateContent();
  3. #3
    Hi, had a thought from home. Additional context: I'm brand new to ext, my boss basically said "learn this" about a week ago, so I am prone to the semi-colon error; that is, the obvious error that an advanced user misses because they assume something deeper is at work.

    Looking over the js version's documentation, it seems like I may be setting the wrong property on my ext:TextFields.

    txtName.Text = asset.Name;
    That's in my C# codebehind. Unfortunately I can't test my thesis from home as I do not have vpn, but might this be my problem? I'm wondering if I shouldn't be setting txtName.Value or other.

    @Daniil - I will try your suggestions tomorrow, but I recall that when I did not make the UpdateContent calls the application was non-responsive.
  4. #4
    .Text is good to set a value for TextField.

    when I did not make the UpdateContent calls the application was non-responsive.
    Not sure why it can happen. I believe you it will work fine without .UpdateContent() when you will use .Hidden instead of .Visible.

    To get more info about .Visible, please follow:
    http://forums.ext.net/showthread.php?13114

    Wait you tomorrow:)
  5. #5
    Hi Daniil,

    I made the changes you suggested, unfortunately the app is still breaking when loading the content with html tag <i>.

    To reproduce my issue, run the code below. Select the category "Client Alerts" and the asset "Bollay v California {...}". After loading this asset into my editor, the app becomes non-responsive.

    I have refactored the page to run completely self contained. Here is fresh source code. You should be able to paste this into an app and run it.

    Additional info: Windows 7 SP1, Visual Studio 2010, .NET 4.0 platform.

    Markup:
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ExtSample1._Default" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <ext:ResourceManager runat="server" ID="ResourceManager1" />
        <form id="form1" runat="server">
    
            <ext:Viewport runat="server" ID="ViewportMain" StyleSpec="background-color: #DFE8F6;" Layout="Fit">
                <Items>
                    <ext:Panel runat="server" ID="PanelFrame" Layout="Border" Title="Asset Library">
                        <Items>
                            <ext:Panel runat="server" ID="PanelNavigation" Title="Navigation" Region="West" Width="200px" Margins="4 0 4 4" Split="true" Collapsible="true">
                                <Items>
                                    <ext:TreePanel runat="server" ID="TreeNavigation" Border="false" />
                                </Items>
                            </ext:Panel>
                            <ext:Panel runat="server" ID="PanelContent" Region="Center" Margins="4 4 4 0" Split="true" Layout="Border" Border="false">
                                <Items>
                                    <ext:Panel runat="server" ID="PanelList" Title="Assets" Region="North" Split="true" Layout="Fit" Height="240">
                                        <Items>
                                            <ext:GridPanel runat="server" ID="GridAssets" StripeRows="true" TrackMouseOver="true" AutoExpandColumn="Description" Border="false">
                                                <Store>
                                                    <ext:Store runat="server" ID="AssetStore">
                                                        <Reader>
                                                            <ext:JsonReader>
                                                                <Fields>
                                                                    <ext:RecordField Name="AssetID" />
                                                                    <ext:RecordField Name="Name" />
                                                                    <ext:RecordField Name="Description" />
                                                                    <ext:RecordField Name="ExpirationDate" Type="Date" DateFormat="c" />
                                                                </Fields>
                                                            </ext:JsonReader>
                                                        </Reader>
                                                    </ext:Store>
                                                </Store>
                                                <ColumnModel>
                                                    <Columns>
                                                        <ext:Column ColumnID="AssetID" Header="Asset ID" DataIndex="AssetID" Hidden="true" />
                                                        <ext:Column ColumnID="Name" Header="Name" DataIndex="Name" Width="500" />
                                                        <ext:Column ColumnID="Description" Header="Description" DataIndex="Description" />
                                                        <ext:Column ColumnID="Expiration" Header="Expiration" DataIndex="ExpirationDate">
                                                            <Renderer Fn="Ext.util.Format.dateRenderer('m/d/Y')" />
                                                        </ext:Column>
                                                    </Columns>
                                                </ColumnModel>
                                                <SelectionModel>
                                                    <ext:RowSelectionModel runat="server" SingleSelect="true" />
                                                </SelectionModel>
                                                <Listeners>
                                                    <RowClick Handler="Ext.net.DirectMethods.RowClick(item.getSelectionModel().getSelected().data.AssetID);" />
                                                </Listeners>
                                            </ext:GridPanel>
                                        </Items>
                                    </ext:Panel>
                                    <ext:Panel runat="server" ID="PanelEditor" Region="Center" Split="true" Layout="Fit">
                                        <Items>
                                            <ext:FormPanel runat="server" ID="FormEditor" Padding="8" ButtonAlign="Right" Border="false" MonitorValid="true" Hidden="true">
                                                <Items>
                                                    <ext:TextField runat="server" ID="txtName" FieldLabel="Name" Anchor="95%" MaxLength="100" />
                                                    <ext:TextField runat="server" ID="txtDesc" FieldLabel="Description" Anchor="95%" MaxLength="500" />
                                                </Items>
                                                <Buttons>
                                                    <ext:Button runat="server" ID="btnSave" Text="Save">
                                                        <Listeners>
                                                            <Click Handler="Ext.net.DirectMethods.SubmitForm();" />
                                                        </Listeners>
                                                    </ext:Button>
                                                </Buttons>
                                            </ext:FormPanel>
                                        </Items>                                    
                                    </ext:Panel>
                                </Items>
                            </ext:Panel>    
                        </Items>
                    </ext:Panel>
                </Items>
            </ext:Viewport>   
        </form>
    </body>
    </html>
    Code:
    using System;
    using System.Collections.Generic;
    using Ext.Net;
    
    namespace ExtSample1
    {
        [Serializable]
        public class AssetCategory : ICloneable, IComparable<AssetCategory>
        {
            #region Properties
            public int? AssetCategoryID { get; set; }
            public string Name { get; set; }
            public string Description { get; set; }
            #endregion
    
            #region Constructor
            public AssetCategory()
            {
                AssetCategoryID = null;
                Name = "";
                Description = "";
            }
            #endregion
    
            #region ICloneable Members
            public object Clone()
            {
                return this.MemberwiseClone();
            }
            #endregion
    
            #region IComparable<AssetCategory> Members
            public int CompareTo(AssetCategory other)
            {
                return SortByName.Compare(this, other);
            }
            #endregion
    
            #region SortByName
            public class Sorter_SortByName : IComparer<AssetCategory>
            {
                public int Compare(AssetCategory x, AssetCategory y)
                {
                    return x.Name.CompareTo(y.Name);
                }
            }
            public static Sorter_SortByName SortByName { get { return new Sorter_SortByName(); } }
            #endregion
        }
    
        [Serializable]
        public class Asset : ICloneable, IComparable<Asset>
        {
            #region Properties
            public int? AssetID { get; set; }
            public int? AssetCategoryID { get; set; }
            public DateTime? ExpirationDate { get; set; }
            public string Name { get; set; }
            public string Description { get; set; }
            #endregion
    
            #region Constructor
            public Asset()
            {
                AssetID = null;
                AssetCategoryID = null;
                ExpirationDate = null;
                Name = "";
                Description = "";
            }
    
            public Asset(int ID, int Category, string aName, string Desc, DateTime? Expiry)
            {
                AssetID = ID;
                AssetCategoryID = Category;
                Name = aName;
                Description = Desc;
                ExpirationDate = Expiry;
            }
            #endregion
    
            #region ICloneable Members
            public object Clone()
            {
                return this.MemberwiseClone();
            }
            #endregion
    
            #region IComparable<Asset> Members
            public int CompareTo(Asset other)
            {
                // Default Sort 
                return SortByName.Compare(this, other);
            }
            #endregion
    
            #region SortByExpirationDate
            private class Sorter_SortByExpirationDate : IComparer<Asset>
            {
                public int Compare(Asset x, Asset y)
                {
                    if (x.ExpirationDate.HasValue)
                    {
                        if (y.ExpirationDate.HasValue)
                        {
                            if (x.ExpirationDate.Value == y.ExpirationDate.Value)
                            {
                                return x.Name.CompareTo(y.Name);
                            }
                            else
                            {
                                return x.ExpirationDate.Value.CompareTo(y.ExpirationDate.Value);
                            }
                        }
    
                        return 1;
                    }
                    else
                    {
                        if (y.ExpirationDate.HasValue)
                        {
                            return -1;
                        }
                        else
                        {
                            return x.Name.CompareTo(y.Name);
                        }
                    }
                }
            }
            public static IComparer<Asset> SortByExpirationDate { get { return new Sorter_SortByExpirationDate(); } }
            #endregion
    
            #region SortByCategory
            internal class Sorter_SortByCategory : IComparer<Asset>
            {
                public int Compare(Asset x, Asset y)
                {
                    if (x.AssetCategoryID.HasValue)
                    {
                        if (y.AssetCategoryID.HasValue)
                        {
                            if (x.AssetCategoryID.Value == y.AssetCategoryID.Value)
                            {
                                return x.Name.CompareTo(y.Name);
                            }
                            else
                            {
                                return x.AssetCategoryID.Value.CompareTo(y.AssetCategoryID.Value);
                            }
                        }
    
                        return 1;
                    }
                    else
                    {
                        if (y.AssetCategoryID.HasValue)
                        {
                            return -1;
                        }
                        else
                        {
                            return x.Name.CompareTo(y.Name);
                        }
                    }
                }
            }
            public static IComparer<Asset> SortByCategory { get { return new Sorter_SortByCategory(); } }
            #endregion
    
            #region SortByName
            private class Sorter_SortByName : IComparer<Asset>
            {
                public int Compare(Asset x, Asset y)
                {
                    return x.Name.CompareTo(y.Name);
                }
            }
            public static IComparer<Asset> SortByName { get { return new Sorter_SortByName(); } }
            #endregion
        }
    
        public partial class _Default : System.Web.UI.Page
        {
            #region Page_Load
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!X.IsAjaxRequest)
                {
                    LoadTree();
                }
            }
            #endregion
    
            #region LoadTree
            private void LoadTree()
            {
                TreeNode root = new TreeNode("Categories");
                root.Expanded = true;
                TreeNavigation.Root.Add(root);
    
                List<AssetCategory> allAssetCategories = new List<AssetCategory>();
    
                AssetCategory cat = new AssetCategory();
                cat.AssetCategoryID = 1;
                cat.Name = "Events";
                cat.Description = "Event Assets";
                allAssetCategories.Add(cat);
    
                cat = new AssetCategory();
                cat.AssetCategoryID = 2;
                cat.Name = "Offices";
                cat.Description = "Office Assets";
                allAssetCategories.Add(cat);
    
                cat = new AssetCategory();
                cat.AssetCategoryID = 3;
                cat.Name = "Client Alerts";
                cat.Description = "Client Alert Assets";
                allAssetCategories.Add(cat);
    
                foreach (AssetCategory category in allAssetCategories)
                {
                    TreeNode categoryNode = new TreeNode(category.Name, Icon.Images);
                    categoryNode.NodeID = category.AssetCategoryID.Value.ToString();
                    categoryNode.Listeners.Click.Handler = "Ext.net.DirectMethods.NodeClick(node.id);";
                    root.Nodes.Add(categoryNode);
                }
            }
            #endregion
    
            #region NodeClick
            [DirectMethod]
            public void NodeClick(string id)
            {
                try
                {
                    int categoryID = int.Parse(id);
                    List<Asset> assets = new List<Asset>();
                    Asset asset;
                    
                    switch (categoryID)
                    {
                        case 1:
                            assets.Add(new Asset(2, 1, "Event Home Banner", "Event Home Banner", null));
                            assets.Add(new Asset(3, 1, "Event Register Button", "Event Register Button", null));
                            assets.Add(new Asset(4, 1, "2011FYA Splash", "2011FYA Splash", DateTime.Parse("2015-12-31 00:00:00.000")));
                            break;
    
                        case 2:
                            assets.Add(new Asset(85, 2, "Client Site Asset Main", "Client Site Asset Description", null));
                            assets.Add(new Asset(86, 2, "Los Angeles Asset Main", "Los Angeles Asset Description", DateTime.Parse("2011-08-02 10:43:01.760")));
                            assets.Add(new Asset(93, 2, "London Asset Main", "London Asset Description", DateTime.Parse("2011-06-18 10:43:01.873")));
                            break;
    
                        case 3:
                            assets.Add(new Asset(147, 3, "Expanded Stockholder Rights Regarding Inspection of Books and Records May Increa Asset Main", "Expanded Stockholder Rights Regarding Inspection of Books and Records May Increa Asset Description", DateTime.Parse("2011-07-25 10:46:36.780")));
                            assets.Add(new Asset(152, 3, "General Counsel Name Latham & Watkins a Top 5 Corporate Law Firm in Corporate Bo Asset Main", "General Counsel Name Latham & Watkins a Top 5 Corporate Law Firm in Corporate Bo Asset Description", DateTime.Parse("2011-06-19 10:46:36.877")));
                            assets.Add(new Asset(154, 3, "<i>Bollay v. California Office of Administrative Law</i>: State Agency Policies Asset Main", "<i>Bollay v. California Office of Administrative Law</i>: State Agency Policies Asset Description", DateTime.Parse("2011-07-02 10:46:36.910")));
                            break;
                    }
    
                    assets.Sort(Asset.SortByName);
                    AssetStore.DataSource = assets;
                    AssetStore.DataBind();
                }
                catch (Exception ex)
                {
                    
                }
                finally
                {
                    PanelList.UpdateContent();
    
                    // Clear editor form
                    FormEditor.Hidden = true;
                    //PanelEditor.UpdateContent();
                }
            }
            #endregion
    
            #region RowClick
            [DirectMethod]
            public void RowClick(int AssetID)
            {
                Asset asset = null;
                switch (AssetID)
                {
                    case 2: asset = new Asset(2, 1, "Event Home Banner", "Event Home Banner", null);
                        break;
                    case 3: asset = new Asset(3, 1, "Event Register Button", "Event Register Button", null);
                        break;
                    case 4: asset = new Asset(4, 1, "2011FYA Splash", "2011FYA Splash", DateTime.Parse("2015-12-31 00:00:00.000"));
                        break;
    
                    case 85: asset = new Asset(85, 2, "Client Site Asset Main", "Client Site Asset Description", null);
                        break;
                    case 86: asset = new Asset(86, 2, "Los Angeles Asset Main", "Los Angeles Asset Description", DateTime.Parse("2011-08-02 10:43:01.760"));
                        break;
                    case 93: asset = new Asset(93, 2, "London Asset Main", "London Asset Description", DateTime.Parse("2011-06-18 10:43:01.873"));
                        break;
    
                    case 147: asset = new Asset(147, 3, "Expanded Stockholder Rights Regarding Inspection of Books and Records May Increa Asset Main", "Expanded Stockholder Rights Regarding Inspection of Books and Records May Increa Asset Description", DateTime.Parse("2011-07-25 10:46:36.780"));
                        break;
                    case 152: asset = new Asset(152, 3, "General Counsel Name Latham & Watkins a Top 5 Corporate Law Firm in Corporate Bo Asset Main", "General Counsel Name Latham & Watkins a Top 5 Corporate Law Firm in Corporate Bo Asset Description", DateTime.Parse("2011-06-19 10:46:36.877"));
                        break;
                    case 154: asset = new Asset(154, 3, "<i>Bollay v. California Office of Administrative Law</i>: State Agency Policies Asset Main", "<i>Bollay v. California Office of Administrative Law</i>: State Agency Policies Asset Description", DateTime.Parse("2011-07-02 10:46:36.910"));
                        break;
                }
    
                // TODO: Hydrate Form
                txtName.Text = asset.Name;
                txtDesc.Text = asset.Description;
    
    
    
    
                FormEditor.Hidden = false;
                //PanelEditor.UpdateContent();
            }
            #endregion
    
            #region SubmitForm
            [DirectMethod]
            public void SubmitForm()
            {
    
            }
            #endregion
        }
    }
  6. #6
    Hi,

    By default, ASP.NET doesn't allow to submit any data with html tags (security exception will be thrown)

    You have to set ValidateRequest="false" for the page to allow html submit

    Also, please see the following article how to enable ValidateRequest under .NET 4
    http://www.west-wind.com/weblog/post...s-in-ASPNET-40
    Last edited by geoffrey.mcgill; May 18, 2011 at 5:55 PM.
  7. #7
    Vladimir,

    Interesting. I'm reading through the material you linked, and it seems the likely culprit - but can you explain how I would trap / handle a request validation error on the client? At the moment, ext just breaks with no indication that the error has occurred.
  8. #8
    Hi,

    You have to pass 'failure' handler to a direct method
    Please see
    https://examples1.ext.net/#/Events/D...ds/Exceptions/
  9. #9
    RequestValidation is definitely the problem. In my app, I loaded my problem case, then manually deleted the html tags from my input fields while leaving the other content. After that, the app worked again. So it was definitely the 4.0 pipeline refusing/rejecting all of ext's POSTs/requests due to the invalid form values.

    This thread is essentially solved. I have many more questions but I will try to muddle through or start another topic if necessary.

    Thanks Daniil and Vladimir!

Similar Threads

  1. Html content inside panel
    By Birgit in forum 2.x Help
    Replies: 1
    Last Post: Apr 02, 2012, 2:34 PM
  2. How to content <%=Html.TextArea()%>
    By qch2006qch in forum 1.x Help
    Replies: 0
    Last Post: Jan 19, 2012, 2:54 AM
  3. [CLOSED] Submitting Html Content from an HtmlEditor
    By ilanga in forum 1.x Legacy Premium Help
    Replies: 2
    Last Post: Oct 12, 2010, 11:27 AM
  4. Replies: 1
    Last Post: May 28, 2010, 1:13 PM
  5. [CLOSED] panel content as html
    By alexp in forum 1.x Legacy Premium Help
    Replies: 4
    Last Post: May 01, 2009, 6:53 AM

Tags for this Thread

Posting Permissions