1

私は Web 開発と asp.net mvc の両方に不慣れで、最初のプロジェクトとしてブログを作成しようとしています。

ブログでは、すべての投稿に独自のページがあるのが標準です(質問ごとに新しいページを持つstackoverflowのようなものです)。しかし、私はこれをどのように達成しようとしているのかを理解するのに苦労しています。

たとえば、すべての新しいページには独自のビューと独自のアクション メソッドが必要です。ここで、1000 件のブログ投稿があるとします。これは、動的に作成されるコントローラーで 1000 件のビューと 1000 件のアクションを意味します。

きっと他に方法があるはずです。この問題に関する少しのガイダンスが大いに役立ちます。

4

2 に答える 2

2

アクションとビューは 1 つしかありませんが、ブログ投稿ごとにデータ (ビュー モデル) が異なります。たとえば、ブログ投稿用の特別なルートを宣言するとします。

routes.MapRoute(
    "BlogPostDetails",
    "posts/{id}/{title}",
    new { controller = "Posts", action = "Details" }
);

ここでは、URL をより SEO フレンドリーにするために呼び出される追加の URL パラメーターを指定してtitleいます (例: "/posts/1/Hello%20world")。

次に、モデルとコントローラーを定義します。

// /Models/BlogPost.cs
public class BlogPost
{
    public string Heading { get; set; }
    public string Text { get; set; }
}

// /Controllers/PostsController
public class PostsController : Controller
{
    public ActionResult Details(string id)
    {
        BlogPost model = GetModel(id);

        if (model == null)
            return new HttpNotFoundResult();

        return View(model);
    }

    private BlogPost GetModel(string blogPostId)
    {
        // Getting blog post with the given Id from the database
    }
}

最後に、ビュー (/Views/Posts/Details.cshtml) は次のようになります。

@model [Root namespace].Models.BlogPost;

<article>
    <h2>@Model.Heading</h2>
    <p>@Model.Text</p>
</article>

これがあなたにとって物事を少し明確にすることを願っています。

于 2013-03-16T11:34:52.153 に答える
1

実際のブログ投稿を識別するアクション メソッドへのパラメーターがあります。

たとえば、次のようになります。

/post/view/123

ID 123 のブログ投稿を表示します。PostController でのアクションは次のようになります。

ViewResult View(int postId){
    //get from db, return appropriate content via view here
}

したがって、この例では、これらすべてを実行するために 1 つのコントローラーと 1 つのアクションのみが必要です。パラメータが変わるだけです。

于 2013-03-16T11:15:51.147 に答える