Url重写时碰到的问题.及我的解决

url重写的环境.
在使用控件的时候时候发现.当鼠标移过去的时候就出现了脚本错误.调试.一下子就发现了. .
WebResource.axd 原来是这个也是被重写处理了.结果位置不对.造成JS不能加载进来.

解决完了后.发现当鼠标移到菜单上的时候.发现了.

xxx.dddd.com/test.aspx 访问时

Menu路径变了.原本是 default.aspx 现在变成了 a.dddd.com/xxx/default.aspx   多了一个xxx
是我跟据域名条件重写的路径.

解决的话是把原来的 default.aspx 变成 ~/default.aspx 这样在url重写的路径访问是正常的但是

http://www.dddd.com/xxx/test.aspx 访问时 路径又不对了变成了 http://www.dddd.com/default.aspx 变成了这个.原本应该是 http://www.ddd.com/xxx/default.aspx

原因是控件本身对哪个跳转地址进行了处理.如果可以取消它的处理哪么就可以OK了.(待续)
还好自己没有必要用http://www.ddd.com/xxx/test.aspx 访问

下面这个是解决 form 提交的问题(代码网上抄的)

None.gif public   class  TemplateBasePage : Page
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
public TemplateBasePage()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
ExpandedSubBlockEnd.gif    }

ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//**/
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
InBlock.gif    
/// 重写默认的HtmlTextWriter方法,修改form标记中的value属性,使其值为重写的URL而不是真实URL。
InBlock.gif    
/// </summary>
ExpandedSubBlockEnd.gif    
/// <param name="writer"></param>

InBlock.gif    protected override void Render(HtmlTextWriter writer)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        
if (writer is System.Web.UI.Html32TextWriter)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            writer 
= new FormFixerHtml32TextWriter(writer.InnerWriter);
ExpandedSubBlockEnd.gif        }

InBlock.gif        
else
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            writer 
= new FormFixerHtmlTextWriter(writer.InnerWriter);
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
base.Render(writer);
ExpandedSubBlockEnd.gif    }

InBlock.gif    
InBlock.gif
InBlock.gif
ExpandedBlockEnd.gif   }

None.gif
internal   class  FormFixerHtml32TextWriter : System.Web.UI.Html32TextWriter
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
private string _url; // 假的URL
InBlock.gif

InBlock.gif    
internal FormFixerHtml32TextWriter(TextWriter writer)
InBlock.gif        : 
base(writer)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        _url 
= HttpContext.Current.Request.RawUrl;
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
public override void WriteAttribute(string name, string value, bool encode)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
// 如果当前输出的属性为form标记的action属性,则将其值替换为重写后的虚假URL
InBlock.gif
        if (_url != null && string.Compare(name, "action"true== 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            value 
= _url;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
base.WriteAttribute(name, value, encode);
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
internal   class  FormFixerHtmlTextWriter : System.Web.UI.HtmlTextWriter
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
private string _url;
InBlock.gif    
internal FormFixerHtmlTextWriter(TextWriter writer)
InBlock.gif        : 
base(writer)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        _url 
= HttpContext.Current.Request.RawUrl;
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
public override void WriteAttribute(string name, string value, bool encode)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
if (_url != null && string.Compare(name, "action"true== 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            value 
= _url;
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
base.WriteAttribute(name, value, encode);
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值