0

テーブルの「Name」列ヘッダーに基づいてデータを表示するアプリケーションがあります。これは、ルーティング構成でIDとして宣言されています。

{controller}/{action}/{name}
defaults: new { controller = "Home", action = "Job", name = UrlParameter.Optional }

ページにはクエリ文字列に基づいて同じ名前の複数の行が表示されるため、名前は主キーではありません。アプリケーションは正常に実行され、CRUD機能は機能しています。私が抱えている唯一の問題は、「編集」または「削除」ページから投稿した後、ユーザーを表示ページにリダイレクトすることです。同じ「名前」のデータの行を表示するページにユーザーを戻したいのですが、私はID(主キー)にしかアクセスできないようですが、これは私が望んでいるものではありません

例えば:

localhost:8888 / Home / Job / Jonathan

Jonathan | Column2 | Column3
Jonathan | Column2 | Column3
Jonathan | Column2 | Column3
Jonathan | Column2 | Column3

行を編集または削除する場合、URLは/ Home / edit?id = 48になり、「ID」に基づいて(コントローラー内の)「名前」列フィールドを取得する方法を理解しようとしています。選択した行の「」をクリックし、投稿後にURLにその「名前」が含まれるページにユーザーを戻します。

戻るボタンの場合、ビュー内で行うのは非常に簡単です。

@{
    var name= Model.Name;
}

<a href="../home/job/@name" class="cancel">Cancel</a>

しかし、フォームを投稿するときにルーティングについて理解できないようです

4

1 に答える 1

0

Html.ActionLink を使用して「名前」をクエリ文字列にも渡すことで、URL の「名前」にアクセスしてコントローラーで使用できることがわかりました。

リンク:

@Html.ActionLink("Edit", "edit", new { id=item.id, name=item.Name})

コントローラ:

    [HttpPost]
    public ActionResult Edit(Table1 table1)
    {
        var query = RouteData.Values["name"];

        var back = "../job/" + query;

        if (ModelState.IsValid)
        {
            _db.Entry(table1).State = System.Data.EntityState.Modified;
            _db.SaveChanges();
            return RedirectPermanent(back);
        }

        return View(table1);
    }
于 2013-02-19T13:31:42.207 に答える