ユーザー管理には、List、Create、Details、Editの 4 つのページがあります。4 ページすべてが部分的なListPartialをレンダリングします。ListPartial をロードするために使用する Ajax スクリプトを次に示します。
<script type="text/javascript">
$(function () {
$('.leftContainer').load('ListPartial');
});
</script>
ListとCreateは正しく機能しますが、DetailsとEditは機能しません。そして、通常の「User/Details/1 」の代わりに「 User/Details?id=1 」という URL を使用して、それを機能させる方法を見つけました。通常の URL で正しく動作させるにはどうすればよいですか?
編集:
ListPartial.cshtml (ユーザーの詳細ページへのリンクと、 List、Create、Details、およびEditの 4 つのビューが Ajax を使用してそれをロードする場所)
@model IEnumerable<ARS.Models.User>
<div class="leftToolbar">
@using (Html.BeginForm("Create", "User"))
{
<button name="button" class="btnAdd" value="Create"></button>
<input id="Text1" type="text" class="txtSearch" />
}
</div>
<div class="smallList">
<table>
<tr>
<th>
Email đăng nhập
</th>
<th>
Nhóm
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.ActionLink(Html.DisplayFor(modelItem => item.Email).ToString(), "Details", new { id=item.ID })
</td>
<td>
@Html.DisplayFor(modelItem => item.Group.Name)
</td>
</tr>
}
</table>
</div>
ユーザーコントローラー/詳細
public ViewResult Details(int id)
{
User user = db.Users.Find(id);
return View(user);
}
Global.asax
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Account", action = "LogOn", id = UrlParameter.Optional } // Parameter defaults
);
}