Я думаю, вам нужно добавить в маршрут некоторые значения по умолчанию для заголовка записи ... и убедиться, что они отображаются. Похоже, у вас нет значений по умолчанию для 'postId' и 'title', но у вас есть одно для несуществующего значения 'post' маршрута.
routes.MapRoute(
"PostDetails",
"posts/{postId}/{title}",
new { controller = "Posts", action = "Details", postId = 0, title = "" },
new { PostId = @"\d+", Title = @"([A-Za-z0-9-]+)" }
);
Пост контроллера
public ActionResult Details(int postId, string title)
{
//whatever
}
Тогда по вашему мнению
<%= Html.ActionLink(Model.Title, "Details", new { @postId = Model.PostID, @title = Model.Title }) %>
Или
<%= Html.ActionLink(Model.Title, "Details", "Posts", new { @postId = Model.PostID, @title = Model.Title }, null) %>
Я бы также предложил создать свойство TitleSlug для вашей модели сообщений.
например. (код взят из здесь )
public partial class Post
{
public string TitleSlug
{
get
{
string str = Title.ToLower();
str = Regex.Replace(str, @"[^a-z0-9\s-]", ""); // invalid chars
str = Regex.Replace(str, @"\s+", " ").Trim(); // convert multiple spaces into one space
str = str.Substring(0, str.Length <= 45 ? str.Length : 45).Trim(); // cut and trim it
str = Regex.Replace(str, @"\s", "-"); // hyphens
return str;
}
}
}
HTHS
Charles