0

次のフォルダー構造があります: 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/ がどこから来ているのかわかりません。

ありがとう!

4

1 に答える 1