Preprocessing Markdown Documents for Keywords
A few minor nit-picks:


I'd change the id checking code around a bit to avoid some redundant checks by first sanitizing the input:

id = string.IsNullOrEmpty(id) ? DefaultDocPage : id;
ViewBag.HomeLinkPage = id == DefaultDocPage ? string.Empty : DefaultDocPage;

Consider making DefaultDocPage a configurable property so you don't have to change the code if when someone asks to have a different name
Trim takes a params array so there is no need to do the ToCharArray, you can just pass in all the trim characters directly like this:

id.Trim('/')

Replacing


var filePath = Server.MapPath(Url.Content("~/Content/Documentation/" + id.Trim("/".ToCharArray()) + ".md"));



with string.format makes it a bit easier to read:

var filePath = Server.MapPath(Url.Content(string.format("~/Content/Documentation/{0}.md", id.Trim('/'))));



1. There is no need to cast to object here:


return View("Index", (object)contents.ToString());