I am facing strange problem in my MVC application.
I had navigation link of page like this-
<a href="/Home/CardDetails?cardID=@Model.cardID">@Model.cardTitle</a>
So i changed its route to make it canonical and added an entry in route.config
file above "Default" route-
routes.MapRoute(
name: "HomeCardDetails",
url: "{controller}/{action}/{cardID}/{cardTitle}",
defaults: new { controller = "Home", action = "CardDetails", cardTitle = UrlParameter.Optional }
);
Then modified link according to route as-
<a href="/Home/cardDetails/@Model.cardID/@Model.cardTitle">@Model.cardTitle</a>
Controller method-
public ActionResult CardDetails(CardModel card) {
var cardDetail = (from u in db.CardTables
where u.IsApproved == "YES" && u.CardID == card.cardID
join v in db.FunRegistereds
on u.FKCardID equals v.UserID
select new CardModel {
cardID = u.CardID,
cardHashCode = u.CardHashCode,
cardDate = u.CardDate,
cardFileName = u.CardFileName,
cardFilePath = u.CardFilePath,
cardTitle = u.CardTitle.Replace(" ","-"),
fkcardID = Convert.ToInt32(u.FKCardID),
aboutCard = u.AboutCard,
uploadedBy = u.UploadedBy == null ? "Anonymous" : u.UploadedBy,
cardspamcount = u.CardSpams == null ? 0 : Convert.ToInt32(u.CardSpams),
cardfavoritecount = u.CardFavorites == null ? 0 : Convert.ToInt32(u.CardFavorites),
cardlovecount = u.CardLoves == null ? 0 : Convert.ToInt32(u.CardLoves),
cardhatecount = u.CardHates == null ? 0 : Convert.ToInt32(u.CardHates)
}).SingleOrDefault();
if (Request.IsAuthenticated && Session["LoggedInUser"] != null) {
if (cardDetail.fkcardID == this.LoggedInUser.UserID) {
ViewBag.Username = cardDetail.uploadedBy;
}
return View(cardDetail);
}
else {
return View(cardDetail);
}
}
Now this new route seems to work fine. But View never comes with layout now.
It renders page without layout.
My actionResult is type View
and it adds entry of viewstart.cshtml
while rendering it.
I just want to know why this is happening and what happened in between?