首页 新闻 搜索 专区 学院

ASP.NET MVC3 的问题

0
悬赏园豆:15 [已解决问题] 解决于 2012-05-28 20:45

我做了一个查询的功能。

我用string id,因为我要用默认的路由。

[ValidateInput(false)]
public ActionResult Search(string id)

{

}

==>>

如果我用post:

<form method="post" action="/tag/search/">
 <input type="text" id="id" name="id"  />
 <input type="submit" value="查询" />
</form>

比如用户输入“你好”后,虽然能正常查询出数据,但是URL地址不会路由到   /tag/search/你好

 

如果我用get:

<form method="get" action="/tag/search/">
<input type="text" id="id" name="id"  />
<input type="submit" value="查询" />
</form>

产生的URL地址是: /tag/search/?id=你好, 这时如果直接在地址栏中敲入/tag/search?id=你好       或者  /tag/search/你好  ,这样的都能访问,也都能取到数据,这样就造成一个内容多个地址的问题,对SEO不好。

 

所以这个问题该怎么解决?

DZCMS的主页 DZCMS | 初学一级 | 园豆:5
提问于:2012-05-27 17:24
< >
分享
最佳答案
0

1. 添加一个Action:public ActionResult SearchRedirect(string id) {}

2. 表单提交到这个Action:<form method="post" action="/tag/SearchRedirect/">

3. 在SearchRedirect Action中重定向至Search Action:Response.Redirect("/tag/search/" + id);

收获园豆:15
dudu | 高人七级 |园豆:36426 | 2012-05-28 11:31

解决了。你太厉害了。在.net 4.0中有RedirectPermanent,是301永久转向,Redirect是302。

DZCMS | 园豆:5 (初学一级) | 2012-05-28 20:45

@abc54288: 嗯,用RedirectPermanent更好

dudu | 园豆:36426 (高人七级) | 2012-05-28 21:18
其他回答(2)
0

一般都用这种:/tag/search?id=你好

artwl | 园豆:16536 (专家六级) | 2012-05-27 19:47

我知道,可目前是MVC3啊,所以不想用带?的url

支持(0) 反对(0) DZCMS | 园豆:5 (初学一级) | 2012-05-27 20:17
0

对于用户输入的数据不适合作为路径也就是不适合‘/tag/search/你好’这样的URL

慧☆星 | 园豆:5555 (大侠五级) | 2012-05-28 10:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册