MVC3框架,razor原理求救!!!急!!!
1、现有view层有
<div class="editor-label">发帖时间</div>
     <div class="editor-field">
        @Html.EditorFor(model => model.PostTime)
        @Html.ValidationMessageFor(model => model.PostTime)
</div>
2、这样自己输入后的PostTime传给后台controller处理:
[HttpPost]
         public ActionResult Create(Article article)
         {
             if (ModelState.IsValid)
             {
                 db.Articles.Add(article);
                 db.SaveChanges();
                 return RedirectToAction("Index");   
             }
             return View(article);
         }
   PS:因为之前有创建一个Article的model:
   public class Article
     {
         public int      ID { get; set; }
         public string   Title{ get; set; }
         public string   Content{ get; set; }
         public string   UserName{ get; set; }
         public DateTime PostTime{ get; set; }
     }
     public class ArticleDbContext : DbContext
     {
         public DbSet<Article> Articles { get; set; }
     }
3、按照框架流程就是前台输入内容,后台按model的形式(真个Article)存入数据库
--------------------------------------
目的:现在我想前台的UserName是登录后的用户名,PostTime也是自动生成,两个一样可以存入数据库,请问我改怎么改? 求高手指点!!!!小弟感激不尽!!!!!
------解决方案--------------------既然用户必须先登录,那在用户登录的Action中可以加入类似Session["UserName"] = username;将用户名存放到Session中。PostTime的话就不需要放到Session中了。大致代码如下:
public class Article
  {
  private DateTime? _postTime;
  public int ID { get; set; }
  public string Title{ get; set; }
  public string Content{ get; set; }
  public string UserName{  
  get
  {
      return Session["UserName"];
  }  
  }
  public DateTime PostTime{  
  get
  {
   if(_postTime == null)
	{
	  _postTime = DateTime.Now;
	}
	return _postTime;
  }
  set
  {
	_postTime = DateTime.Now;
  }
  }
------解决方案--------------------在Model中使用session的确是不够好,再提供ni几个稍微复杂点的办法:
1.自己写个Binder来替代DefualtModelBinder. 在自定义的Binder中做进行预赋值。
2.写ActionFilter在Filter中进行赋值。
------解决方案--------------------
把你的 Create 方法做如下修改
C# code
  [HttpPost]
  public ActionResult Create([color=#FF0000][Bind(Exclude="UserName,PostTime")][/color]Article article)
  {
   article.UserName="你要赋值的登录名";
   article.PostTime=DateTime.Now;
  if (ModelState.IsValid)
  {
      db.Articles.Add(article);
      db.SaveChanges();
      return RedirectToAction("Index");   
  }
      return View(article);
  }