2012-01-01 35 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