1

つまりね。「テスト」という名前のこのビューがあります。

   @model Project.Models.Test
   @{
    Layout = null;
    }

   <!DOCTYPE html>
   <html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>Testing</title>   
   </head>
   <body>
    @using (Html.BeginForm()) {
    @Html.AntiForgeryToken()

  --- some html and razor using model attributes ---

  }
  </body>
  </html>

そして、TestController では、ビューを返す必要がある ActionResult メソッド。

    public ActionResult Testing(int id) {
        Test test = db.Test.Find(id); (I have a breakpoint in here)
        if (test == null)
        {
            return HttpNotFound();
        }
        return View(test);
    }

何らかの理由で、ブラウザーのアドレスバーに書き込むとlocalhost:(number of port)/Test/Testing/1、コントローラーからではなくビューがレンダリングされます。これは、コントローラーにブレークポイントがあり、その命令を実行しないためです。そのため、オブジェクトがないため、明らかにすべてが null です。コントローラーアクションを呼び出さずにビューがレンダリングされる理由がわかりません。

編集:私のルート構成は次のようになります

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
4

0 に答える 0