つまりね。「テスト」という名前のこのビューがあります。
@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 }
);
}
}