このように定義された2つのルートがあります:
//Custom route for legacy admin page
routes.MapPageRoute(
"LocaliseRoute", // Route name
"Admin/Localise", // URL
"~/Views/Admin/Localise.aspx" // File
);
routes.MapRoute(
"Admin", // Route name
"Admin/{action}/{id}", // URL with parameters
new { controller = "Admin", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
次の GET は両方とも正常に機能します。
http://pegfect.local/Admin/PegModelUpload
http://pegfect.local/Admin/Localise
しかし、前者のフォームアクションは/Admin/Localise?action=UploadPegModel&controller=Admin
その結果、「WTF ?!」という表現になります。
フォームのコードは次のとおりです。
@using (Html.BeginForm("UploadPegModel", "Admin", FormMethod.Post, new { enctype = "multipart/form-data", onsubmit = "return validateForm();" }))
{
<input type='file' name='file' id='file' />
<input type="submit" value="submit" />
}