ルートの作成やデータベースからの新しいページの作成などについて多くの質問をしてきました。次のモデル、コントロール、およびビューがあります。
モデル
namespace LocApp.Models
{
public class ContentManagement
{
public int id { get; set; }
[Required]
public string title { get; set; }
public string content { get; set; }
}
}
コントローラ
public ViewResult Index(string title)
{
using (var db = new LocAppContext())
{
var content = (from c in db.Contents
where c.title == title
select c).ToList();
return View(content);
}
}
ビュー(一部)
@model IEnumerable<LocApp.Models.ContentManagement>
@{
foreach (var item in Model)
{
<h2>@item.title</h2>
<p>@item.content</p>
}
}
*View (Full) - このコードは _Content パーシャルを呼び出すことに注意してください*
@model IEnumerable<LocApp.Models.ContentManagement>
@{
ViewBag.Title = "Index";
}
@{
if(HttpContext.Current.User.Identity.IsAuthenticated)
{
<h2>Content Manager</h2>
Html.Partial("_ContentManager");
}
else
{
Html.Partial("_Content");
}
}
site.com/bla にアクセスすると、モデルが処理されて情報が含まれますが、「魔法のように」リロードされます。これが起こるのを確認するために、コントローラーとビューを突き破ります。2 回目はモデルが空であるため、ページにコンテンツが表示されません。
私のルートは次のようになります。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("favicon.ico");
routes.MapRoute(
"ContentManagement",
"{title}",
new { controller = "ContentManagement", action = "Index", title = UrlParameter.Optional }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
アップデート
問題は単純なようです。インデックスはタイトルを取得し、ループしてコンテンツを取得し、それをビューに渡します。しかし、ページの読み込みが完了する前に再びループし、今度は null をタイトルとして渡し、空のページを読み込みます。