0

MVC に正しい URL を生成させようとしています。

現在、次のようになっています: http://domain.com/Live/Schedule?date=2013-03-29

もちろん、次のように正しく生成する必要があります: http://domain.com/Live/Schedule/2013-03-29

私のGlobal.Asax

routes.MapRoute(
name: "LiveSchedule", // Route name
url: "Live/{action}/{date}", // URL with parameters
defaults: new { controller = "Live", action = "Schedule", date = UrlParameter.Optional }
);

リクエストをトリガーする Web ページ上のコード:

@using(Html.BeginForm("Schedule", "Live", FormMethod.Get))
{
<div>
    Specify a date: @Html.DropDownList("date", Model.SelectedDateList) <input type="submit" value="Display"/>
</div>
}

結果:

<form action="/Live/Schedule" method="get">                    
<div>
Select a date: <select id="date" name="date"><option value="2013-03-27">27 onsdag</option>
<option value="2013-03-28">28 torsdag</option>
<option selected="selected" value="2013-03-29">29 fredag</option>
<option value="2013-03-30">30 l&#246;rdag</option>
<option value="2013-03-31">31 s&#246;ndag</option>
...
</select> <input type="submit" value="Display"/>
</div>
</form>  

入力を受け入れるコントローラー:

public ActionResult Schedule(string date)
{
    var model = getModel(date);
    return View(model);
}

私は何を間違っていますか?

4

1 に答える 1

0

あなたが混乱しているのは、ASP.NET MVCの機能ではなく、取得URLを生成するのは通常のHTMLです。

仕様 ( RFC1866、ページ 46; HTML 4.xセクション 17.13.3) の状態:

メソッドが「get」で、アクションが HTTP URI の場合、ユーザー エージェントはアクションの値を取得し、「?」を追加します。それに、「application/x-www-form-urlencoded」コンテンツ タイプを使用してエンコードされたフォーム データ セットを追加します。

于 2013-05-19T00:44:00.120 に答える