1

ルートの作成やデータベースからの新しいページの作成などについて多くの質問をしてきました。次のモデル、コントロール、およびビューがあります。

モデル

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 をタイトルとして渡し、空のページを読み込みます。

4

1 に答える 1

-1

私が見る最大の問題は、実際にモデルを部分ビューに渡していないことです

@model IEnumerable<LocApp.Models.ContentManagement>

@{
    ViewBag.Title = "Index";
}

@{
    if(HttpContext.Current.User.Identity.IsAuthenticated)
    {
        <h2>Content Manager</h2>

        Html.Partial("_ContentManager", Model);
    }
    else
    {
        Html.Partial("_Content", Model);
    }
}
于 2013-04-25T18:57:24.447 に答える