8

私はMVC4コントローラーにわかりやすい名前を付けることに取り組んでおり、[ActionName="My-Friendly-Name"]スタイルのようなことをしたいのですが、コントローラー全体に対してです。

そのような属性に関する情報が見つからなかったので、どうすればそれを実行できますか?また、それを処理するために新しいMapRouteを追加する必要がありますか?

編集:

たとえば、次のURLをルーティングしたいと思います。

 http://mysite.com/my-reports/Details/5

次のコントローラーにルーティングされます。

[ControllerClass="my-reports"]  // This attribute is made up.  I'd like to know how to make this functionality
public class ReportsController : Controller
{
    //
    // GET: /Reports/

    public ActionResult Index()
    {
        return View();
    }

    public ViewResult Details(int id)
    {
        Report report = db.Reports.Single(g => g.Id == id);
        return View(report);
    }

    public ActionResult Create()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Create(Report item)
    {
        try
        {
            if (ModelState.IsValid)
            {
                item.Id = Guid.NewGuid();
                _context.Reports.AddObject(item);
                _context.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(item);
        }
        catch (Exception)
        {
            return View(item);
        }
    }

}

4

4 に答える 4

8

特定の名前に一致するカスタムルートを追加します。

routes.MapRoute(
    "MyCustomRoute",
    "My-Friendly-Name/{action}/{id}",
    new { controller = "ReportsController", action = "Index", id = "" }
);

これで、コントローラーの「My-Friendly-Name」を含むすべてのURLが新しいルートを使用します。

于 2012-09-22T03:51:22.103 に答える
2

この投稿をチェックしてください。特に、ルートのフォーマットについて説明しています。

于 2012-09-24T02:01:14.120 に答える
0

Microsoft.AspNetCore.Mvcを使用します。

[ControllerName( "SomeOtherName")]//この属性は構成されていません。
パブリッククラスReportsController:コントローラー{..。

于 2021-05-21T06:53:05.497 に答える
-2

あなたの質問に対する答えがあるかどうかはわかりませんが、答えがあったとしても、なぜ世界でそんなことをするのでしょうか。標準的な方法を実行してみませんか:コントローラークラスを好きなように呼び出し(意味がある限り)、フレームワークから呼び出されますか?なぜ2つの人工的な命名規則を作成し、それらの間にマップするのですか?単一のゲインではなく、複数の短所があります。たとえば、読みにくく、維持しにくく、理解しにくい、それも重要ではありませんが、それでもパフォーマンスへの負担は...

アップデート

この投稿を調べてください、私は彼らがあなたが話している問題を解決したと思います。

それがあなたの助けになったなら、私に知らせてください。

于 2012-09-22T02:35:57.450 に答える