URL で複数のピリオドを許可するにはどうすればよいですか?
サンプル URL:
http://mylocalhost:6968/MyHome/Edit/ABCD.Applications.ClinicalData%257cCache_Timeout
私が試してみました:
さまざまな URL エンコーディング:
@{
//string encodedItem = Url.Encode(item.Key);
//string encodedItem = HttpUtility.UrlEncode(item.Key);
string encodedItem = Server.UrlEncode(item.Key);
}
ルート ハンドラの追加:
<add name="UrlRoutingHandler" type="System.Web.Routing.UrlRoutingHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" path="Remote.mvc/*" verb="GET"/>
web.config の変更system.web
<httpRuntime relaxedUrlToFileSystemMapping="true" />
これらのいずれも、サンプル URL を修正しませんでした。
関連コード
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Key)
</td>
<td>
@Html.DisplayFor(modelItem => item.Value)
</td>
<td>
@Html.DisplayFor(modelItem => item.IsActive)
</td>
<td>
@{
//string encodedItem = Url.Encode(item.Key);
//string encodedItem = HttpUtility.UrlEncode(item.Key);
string encodedItem = Server.UrlEncode(item.Key);
}
@Html.ActionLink("Edit", "Edit", new { id = encodedItem }) |
@Html.ActionLink("Details", "Details", new { id = encodedItem }) |
@Html.ActionLink("Delete", "Delete", new { id = encodedItem })
</td>
</tr>
}
[編集] リンクをクリックしています。
私も試しました
@Html.ActionLink("Edit", "Edit", new { id = item.Key })
次のhtml出力がありました:
a href=/MyHome/Edit/ABCD.Applications.ClinicalData%7CCache_Timeout
このリンクをクリックすると、エラーが発生します。
HTTP Error 404.0
にブレークポイントを設定しましたController.Edit
。ブレークポイントにヒットすることはありません。フォームの URL があるときはいつでも:
http://mylocalhost:6968/MyHome/Edit/ABCD.X
X が a の後にある.
場合、このエラーが発生します。X を削除すると、ブレークポイントにヒットします。