日期:2014-05-17  浏览次数:20396 次

MVC 求大神指点
小弟刚刚看了几天MVC,有一些地方不是很明白,希望各位帮忙讲解一下。
(1)MVC的路由机制
MVC中路由有好几种定义,比如{controller}/{action}/{id}或者{reporttype}/{year}/{month}/{day},系统路由设置是放在Global.asax文件中的,,,貌似只能设置一种默认路由吧,一般默认为{controller}/{action}/{id},一个系统中只能有一个路由定义吗?那如果我打开报表,该怎么打开呢?
(2)MVC怎么从数据库中已存在的表中读取数据,而不是通过EFCodeFirst方式新增的表。
(3)我自定义了一个远程验证(Remote Validation),当不满足条件时是可以验证,但是当我保存数据的时候,确没反应。如果把我在Model上把它的特性去掉,就可以保存了。
代码如下:
Controller
 public JsonResult CheckTitleUnqie(string Title)
  {
  if (Title.Length > 5)
  {
  return Json("标题太长了", JsonRequestBehavior.AllowGet);
  }
  else
  {
  return Json("",JsonRequestBehavior.DenyGet);
  }
  }
下面这个保存方法根本进不来。
  [HttpPost]
  public ActionResult Edit(Movie model)
  {
  var movie = db.Movies.Find(model.ID);
  try
  {
  UpdateModel(movie);
  db.SaveChanges();
  return RedirectToAction("Details", new { id = movie.ID });
  }
  catch (Exception e)
  {
  ModelState.AddModelError("", "修改失败");
  }
  return View(movie);
  }

Model:
public class Movie
  {
  public int ID { get; set; }
  [Required(ErrorMessage="电影标题不能为空")]
  //[StringLength(10,ErrorMessage="电影标题不能超过10个字符")]
  [Remote("CheckTitleUnqie", "Movie")]
  public string Title { get; set; }
  public DateTime ResealseDate { get; set; }
  //[Required(ErrorMessage = "价格不能为空")]
  [Price(ErrorMessage = "价格不合理")]
  //[RegularExpression(@"^(0|1-9\d)$",ErrorMessage="")]
  public float Prices { get; set;}
  [Required(ErrorMessage = "{0}不能为空")]
  public string Type { get; set; }
  }
视图的就不贴了,应该没关系吧。

------解决方案--------------------
1、可以在global里面添加多个路由的,根据自己需要的

------解决方案--------------------
1.当然是可以多个啊
2.可以用Ado.NET读取数据,再转换成实体类,或用DataTable也行

3.调试~ ^_^