asp.net 如何去掉Repeater控件产生的html杂乱代码?

weige003 2010-10-13 03:11:12
这是Repeater控件产生的html代码:<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTEzNzAwOTEyMzNkZHpxRa9KFh5yE8Q/UjKHXiC8lqtC" />,对SEO来说非常受影响,请问用什么办法可以去掉,非常感谢!
...全文
495 54 打赏 收藏 转发到动态 举报
写回复
用AI写文章
54 条回复
切换为时间正序
请发表友善的回复…
发表回复
weige003 2010-10-14
  • 打赏
  • 举报
回复
asp.net有几种方法绑定数据到页面?
phil999 2010-10-14
  • 打赏
  • 举报
回复
google很看重一个网站的外链,包括数量和质量,但是基本上,外链不是你自己能够控制的。有一些技巧,比如写软文等着别人转载,但是很麻烦,而且那是垃圾站的运行策略,很没意思
phil999 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 weige003 的回复:]
引用 19 楼 phil999 的回复:
这是有webform特色的html代码,虽然有些办法----例如禁用视图状态,甚至写个自定义的Filter----去掉这些东西,但明显得不偿失。asp.net mvc生成的html就很干净。楼主说这些代码影响SEO,我倒觉得未必。如果老板一定要改才舒服,那就把需要SEO的页面重写一遍,不用server control。

如果那串代码过长也对SEO没……
[/Quote]

我觉得不会有影响。我的理解,SEO,首先是内容,内容要原创,这是真正重要的

技术上的因素可能反而不那么重要:
title
url别太复杂
h1
img.src
meta key
meta description
html代码结构好点

不过这些都是传说,有没有用,有多大的权重,谁都说不好
xiesiren 2010-10-14
  • 打赏
  • 举报
回复
你去掉form标签不就没有了那个了吗
ChargeForward 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wuyq11 的回复:]

ViewState在客户端的保存形式,保存在一个ID为__VIEWSTATE的Hidden中,它的Value是使用Base64编码后的字符串。这个字符串实际上是一个对象序列化之后的结果。这个对象保存了整个页面的控件树的ViewState。可以使用一些工具将这个字符串进行解码查看其内容
EnableViewState="false"
[/Quote]

这样也还会有那个标签的, 不过 我的觉得这个标签不影响SEO优化吧... 我也做过SEO优化的啊
linsx1987 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 weige003 的回复:]
引用 36 楼 linsx1987 的回复:
如果你的页面只是用来显示数据,完全可以把<form runat="server">去掉。
需要交互的页面才需要用到<form runat="server">
你可以试试看,页面只用一个Repeater绑定数据,然后去掉<form runat="server">
看看页面那串东西还多不多的

其实那串东西多少会对seo有所影响,但是影响不大!……
[/Quote]

你试过吗?你看清楚我说的话,交互页面使用<form runat="server">
单纯来显示页面的去掉<form runat="server">
不可能一个网站每个页面都需要用来交互的
风骑士之怒 2010-10-14
  • 打赏
  • 举报
回复
用php吧
personball 2010-10-14
  • 打赏
  • 举报
回复
在repeat里不用服务器控件就行- -
马老虎 2010-10-14
  • 打赏
  • 举报
回复
那么 就别使用viewstate了。
种草德鲁伊 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 weige003 的回复:]

去掉 runat="server" 一个完整的网站很多控件,那肯定不行的啦!

[/Quote]

你怎么知道不行,你试过了吗?
wangxiaofeiwuqiao 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 menghuan816 的回复:]
引用 31 楼 wangxiaofeiwuqiao 的回复:
上面的代码就是将ViewState的位置调整到网页底部,不影响性能。这种方法就是重写页面的Render,将ViewState的Html标记移到底部。


那要怎样调用这个方法?
[/Quote]
把上面的代码直接放到cs那里就行了,命名空间: using System.Text.RegularExpressions;
我测试过了,是可以的 。
一般只有连接的页面,就是没有与用户交互的页面没有问题。其他的我就没有具体测试过
weige003 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 linsx1987 的回复:]
如果你的页面只是用来显示数据,完全可以把<form runat="server">去掉。
需要交互的页面才需要用到<form runat="server">
你可以试试看,页面只用一个Repeater绑定数据,然后去掉<form runat="server">
看看页面那串东西还多不多的

其实那串东西多少会对seo有所影响,但是影响不大!首页默认是不会出现这种情况,这你可以放心。
至……
[/Quote]
去掉 runat="server" 一个完整的网站很多控件,那肯定不行的啦!
linsx1987 2010-10-14
  • 打赏
  • 举报
回复
如果你的页面只是用来显示数据,完全可以把<form runat="server">去掉。
需要交互的页面才需要用到<form runat="server">
你可以试试看,页面只用一个Repeater绑定数据,然后去掉<form runat="server">
看看页面那串东西还多不多的

其实那串东西多少会对seo有所影响,但是影响不大!首页默认是不会出现这种情况,这你可以放心。
至于其他页面,交互的时候就需要<form runat="server">
只是显示数据的页面就可以去掉,这样调整,我想对你会有所帮助的
weige003 2010-10-14
  • 打赏
  • 举报
回复
asp.net有几种方法绑定数据到页面?
pxh360395296 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 kkbac 的回复:]
引用 5 楼 menghuan816 的回复:

引用 3 楼 kkbac 的回复:
你的页面上面<form runat="server" .... 里面的 runat="server"去掉就可以了.
SB 怎么可能去掉runat="server"
没知识不是你的错.
[/Quote]
如果你的页面没有事件回发,你完全可以去掉<form runat="server">的,服务器控件照样使用
这样生成的html就没有viewstate了.
ViewState总的来说它还是非常好的:安全,保存状态,方便....
l576981437 2010-10-14
  • 打赏
  • 举报
回复
你要用他自带的控件 能去掉才怪
weige003 2010-10-14
  • 打赏
  • 举报
回复
楼上的方法不错呀?
menghuan816 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 wangxiaofeiwuqiao 的回复:]
上面的代码就是将ViewState的位置调整到网页底部,不影响性能。这种方法就是重写页面的Render,将ViewState的Html标记移到底部。
[/Quote]

那要怎样调用这个方法?
wangxiaofeiwuqiao 2010-10-14
  • 打赏
  • 举报
回复
上面的代码就是将ViewState的位置调整到网页底部,不影响性能。这种方法就是重写页面的Render,将ViewState的Html标记移到底部。
wangxiaofeiwuqiao 2010-10-14
  • 打赏
  • 举报
回复
如果不改变编程方式,没有什么好办法。
其实可以调整ViewState的位置,让你的asp.net页面对搜索引擎更友好收藏。

private static readonly Regex viewStateRegex = new Regex(@"(<input type=""hidden"" name=""__VIEWSTATE"" id=""__VIEWSTATE"" value=""/w(.*)"" />)", RegexOptions.Multiline | RegexOptions.Compiled);
//</form>标记的正则表达式
private static readonly Regex endFormRegex = new Regex(@"</form>", RegexOptions.Multiline | RegexOptions.Compiled);

protected override void Render(HtmlTextWriter writer)
{
System.IO.StringWriter stringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
base.Render(htmlWriter);

string html = stringWriter.ToString();
Match viewStateMatch = viewStateRegex.Match(html);
string viewStateString = viewStateMatch.Captures[0].Value;//找出ViewState的Html标记
html = html.Remove(viewStateMatch.Index, viewStateMatch.Length);//替换掉ViewState的html标记

Match endFormMath = endFormRegex.Match(html, viewStateMatch.Index);
html = html.Insert(endFormMath.Index, viewStateString);//将ViewState的Html标记插入到</form>标记之前
writer.Write(html);
}
加载更多回复(33)
HTML code

Repeater ID="Repeater1" runat="server">



<%#Eval("Areaname") %>

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧