日期:2014-05-18  浏览次数:20614 次

MVC3 实现TAG功能
因为我想用这样的地址形式:http://www.xxx.com/Tag/tag/点击
Tag是控制器,tag是action,点击 这个是具体的关键字

每个关键字在表中是唯一的。

控制器:
public ActionResult tag(string tag)
  {
  ViewBag.tagname = tag.Trim();//想把这相绑定到title
  var articles = db.Tags.Where(t => t.TagName == tag.Trim()).ToString();
  return View(articles);
  }

但是现在,一访问就报了。
1: ViewBag.tagname = tag.Trim();//想把这相绑定到title.
这一行报错,未将对象绑定到实例;

2:http://www.xxx.com/Tag/tag/点击 时,访问路径中具有非法字符。

------解决方案--------------------
默认路由接收的参数是id而不是tag
public ActionResult tag(string id) 才能用http://www.xxx.com/Tag/tag这种方式访问
修改默认的路由
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Diary_default",
"Diary/{controller}/{action}/{id}", 把这里的id换成tag
new { controller = "Diary", action = "Index", id = UrlParameter.Optional }
);
}

把上面的id换成tag