Razor 記法に対応したコードハイライトはまだないのかー… orz
<table>
<tr>
<th>社員番号</th>
<th>所属部署</th>
<th>氏名</th>
<th>詳細</th>
</tr>
@foreach (var staff in ViewBag.StaffList as IEnumerable<StaffInfo>)
{
<tr>
<td>@staff.Number</td>
<td>@staff.PostName</td>
<td>
@staff.Name
(@CommonUtils.CalcAge(staff.Birth) / @staff.Sex)
</td>
<td>
@using (Html.BeginForm("StaffDetail", "StaffMaster",
new { sn = staff.Number }, FormMethod.Get))
{
<button type="submit">詳細...</button>
}
</td>
</tr>
}
</table>
…などと書いたりした場合、@using (Html.BeginForm()) { ... }
ブロックの部分について…
期待する出力結果:
<form action="/StaffMaster/StaffDetail" method="get">
<input type="hidden" name="sn" value="12345678" />
<button type="submit">詳細...</button>
</form>
実際の出力結果:
<form action="/StaffMaster/StaffDetail?sn=12345678" method="get">
<button type="submit">詳細...</button>
</form>
…おいコラ。こんな HTML でブラウザがフォームパラメータをちゃんと渡してくれると本気で思ってるのか? (とりあえず Firefox ではパラメータが渡されませんでした)
ドキュメントにもちゃんと
ルートのパラメーターが含まれるオブジェクト。 オブジェクトのプロパティを調べることで、リフレクションを介してパラメーターが取得されます。 通常、このオブジェクトは、オブジェクト初期化子構文を使用して作成されます。
って書いとるやんか… ちゃんと期待したとおりに動いてえな…。
(Visual Studio 2013 / .NET Framework 4.5 にて確認)