3

次のような AdminController があります。

AdminController [Route("admin")]

Index() (landing page for all administrative content)

UserIndex() - [Route("users")]
UserDetails() - [Route("users/details/{id}")]

RoleIndex() - [Route("roles")]
RoleDetails() - [Route("roles/details/{id}")]

これらは次の URL パターンと同じです。

管理者/ユーザー
管理者/ユーザー/詳細/1

ただし、私のビューで次のことを実行しようとすると、機能しません。

Url.Action("UserDetail", "Admin")

これは、'/admin/users/details' を出力するのに十分スマートではないでしょうか?

Url.Action("Index", "Admin")ルートタグがないため、そうしないと機能しません。

アップデート:

Kendo Grid ClientTemplate 列でKendo Template Syntaxを使用しようとしています:

    columns.Bound(c => c.Id).ClientTemplate(
        "<a href='" +
            Url.Action("UserDetails", "Admin") +
            "/#= Id #'" +
        ">Details</a>"
    );

各行のリンクは次のようになります: 'localhost:9000/123' /admin/users/detail は完全に無視されます...

AdminController で呼び出そうとしているメソッドの正確な宣言は次のとおりです。

// GET: Users/Details/5
[Route("users/details/{id}")]
public async Task<IActionResult> UserDetails(string id)
{
}
4

1 に答える 1

3

コントローラーのルートとアクションを再確認する

[Route("admin")]
public class AdminController : Controller {
    // GET admin
    [Route("")]
    public IActionResult Index() {...}

    //GET admin/users
    [Route("users")]
    public IActionResult UserIndex() {...}

    //GET admin/users/details/1
    [Route("users/details/{id}")]
    public IActionResult UserDetails(string id) {...}

    //GET admin/roles 
    [Route("roles")]
    public IActionResult RoleIndex() {...}

    //GET admin/roles/details/1
    [Route("roles/details/{id}")]
    public IActionResult RoleDetails(string id) {...} 

}

これは、'/admin/users/details' を出力するのに十分スマートではないでしょうか?

あなたのルート設定によると、/admin/users/details存在しません。

/admin/users/details/{id}{id} が である場所へのリクエストを待っていuseridます。したがって、Url.Action("UserDetail", "Admin")が要求された場合、一致するものはありません。

Url.Action("UserDetail", "Admin", new { id = "1" })

idルートを更新することで、パラメーターをオプションにすることができます

[Route("users/details/{id?}")]

これによりusers/details、作業が可能になります。ただし、idパラメータの値はデフォルトで になりますnull

Url.Action("Index", "Admin")ルートタグがないため、そうしないと機能しません

Url.Action("Index", "Admin")規則はデフォルトでインデックスに一致するため、のみ機能します。

于 2016-04-17T03:36:46.233 に答える