アクションとビューは 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>
これがあなたにとって物事を少し明確にすることを願っています。