2012-01-01 31 views
0

让我描述我有的代码,然后我问这个问题。ASP.NET MVC3,使用Forms GET方法的模型集合,是URL/SEO友好

我有这样的类

public class MyModel 
{ 
    public virtual ICollection<SomeObject> fweek { get; set; } 
    public virtual ICollection<SomeObject> ftxt { get; set; } 
    public virtual ICollection<SomeObject> fbool { get; set; } 
} 

然后,我创造了这样的模型编辑器:

@model MyModel 
@using(Html.BeginForm("SomeAction", "SomeController", FormMethod.GET)) 
{ 
    @Html.EditorFor(m => m.fweek) 
    @Html.EditorFor(m => m.ftxt) 
    @Html.EditorFor(m => m.fbool) 
    <input type="submit" value="Submit" /> 
} 

如果我提交我的形式,结果我重定向到类似的URL:

http://localhost:3517/pl-PL/Places/Search? 
fbool%5B0%5D.Value=false& 
fweek%5B0%5D.Value=1& 
fweek%5B1%5D.Value=2& 
ftxt%5B0%5D.Value=23fasf& 
ftxt%5B1%5D.Value=assffg& 

问题是: 是否有可能重写这样的URL(尤其是%5B和%5D序列)变得更加SEO /用户友好? 比方说这个例子URL可能看起来像这样:

http://localhost:3517/pl-PL/Places/Search? 
fbool.Value=false& 
fweek.Value=1& 
fweek.Value=2& 
ftxt.Value=23fasf& 
ftxt.Value=assffg& 

感谢您的任何帮助。 此致敬礼。

+0

我无法重现该场景。我剪切/粘贴你的代码,从你的示例URL中推导出一个带有单个属性'Value'的SomeObject类作为字符串。 Html.EditorFor没有生成HTML,也没有被重定向到任何URL,所以你是如何得到这个的? – enorl76 2012-01-02 18:48:18

回答

0
http://localhost:3517/pl-PL/Places/Search? 
fbool.Value=false& 
fweek.Value=1& 
fweek.Value=2& 
ftxt.Value=23fasf& 
ftxt.Value=assffg& 

这在任何情况下都不起作用,因为您发送的多个表单字段具有相同的名称,所以他们需要有一个与它们相关联的索引。 I.E.

fweek[0].Value=1&fweek[1].Value =2 

没有索引你怎么能确定哪个fweek是哪个?

为什么不只是发布此表单?

+0

确定哪个'fweek'是不重要的,因为这是某些值的无序集合...我需要缩短和美化这个URL。所以也许有什么办法可以做到这一点(也许省略'.Value'后缀而不改变'fweek'对象声明)? – 2012-01-08 20:25:03