次のフォルダー構造があります: Controller/EntityController Views/Entity/Index.cshtml Views/Shared/DisplaTemplates/CustomEntity.cshtml
エンティティコントローラ:
public ActionResult Index()
{
var entities = CustomEntityRepository.GetAll();
return View(entities);
}
public ActionResult Edit(int id)
{
if (id == 0)
{
return HttpNotFound();
}
var entity = CustomEntityRepository.Find(e => e.ID == id);
return View(entity);
}
Index.cshtml の内容:
@model IEnumerable<CustomEntity>
@{
ViewBag.Title = "Index";
}
@Html.DisplayForModel()
CustomEntity.cshtml の内容:
@model CustomEntity
<div>
Entity:
<strong>@Model.Name</strong>
@Html.ActionLink("Show All","Edit","Entity", new { id= @Model.ID}, null)
@Html.LabelFor(m=>m.Icon):
@Model.Icon
@Html.LabelFor(m=>m.TypeName):
@Model.TypeName
</div>
編集: ルーティング構成:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
ただし、ActionLink は期待どおりに機能しません。ActionLink が、個々のエンティティによって提供される ID を使用して EntityController Edit アクションを指すようにします。代わりに、次の URL をレンダリングします。
http://localhost/MySite/Reports?action=Edit&controller=Entity&id=1
/Reports/ がどこから来ているのかわかりません。
ありがとう!