ASP.NET MVC Routing. Whitespaces and categories
===

I've got a main navigation and one of its list items renders an action:

    [ChildActionOnly]
    public ActionResult BuildMenu(String category = null) {
        ViewBag.SelectedCategory = category;
        return View("~/Views/Article/CategoriesList.cshtml", this.GetItems());
    }

Where `GetItems` method is:

    [NonAction]
    public IEnumerable<String> GetItems() {
        return this.session.Query<Article>()
            .Select(x => x.Category)
            .Distinct().ToList()
            .OrderBy(x => x);
    }

When posting an Article one can specify category like this: *`Fringe Division`*. So in address bar it looks like *`Fringe%20Division`*.

Inside a view (menu partial) I have this:

    @model IEnumerable<String>
    @{ Layout = null; }

    <ul class="transparent-custom">
    @foreach(var link in Model) {
        <li>@Html.RouteLink(
            link, 
            new { 
                controller = "Article", action = "Index", 
                category = link
            },
            new {
                @class = link == ViewBag.SelectedCategory ? "selected" : ""
            }
        )
        </li>
    }
    </ul>

If I apply here something like `category = Url.ToUrlFriendly(link)` (replacing all unacceptable chars with dashes, or with any other chars) while it looks cool in address bar my controller doesn't recognize the category (and that's obvious: it differs from its original):

    public ActionResult Index(String category, Int32? page) {
        
        // there's no such a category in DB...

        ViewBag.CurrentCategory = category;
        if(category == "All") {
            return View(this.GetAllArticles().ToPagedList(page ?? 1, this.PageSize));
        }
        var entries = this.session.Query<Article>()
            .Where(c => c.Category == category)
            .OrderBy(d => d.CreatedOn);
            return View(entries.ToPagedList(page ?? 1, this.PageSize));
        }

How do I handle it the best way?
Thanks!