日期:2014-05-16  浏览次数:20910 次

Asp.Net MVC4 系列--进阶篇之Helper(2)

本章接着介绍Asp.NetMVC4中的Helper

 

首先做准备工作,为了读者方便阅读,笔者把上篇文章中(Asp.Net MVC4系列—进阶篇之Helper(1)) 的代码再复制在这边一份,这篇文章都以此为开始:

Person类(Model中):


  public class Person
    {
        public int PersonId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime BirthDate { get; set; }
        public Address HomeAddress { get; set; }
        public bool IsApproved { get; set; }
        public Role Role { get; set; }
    }


    public class Address
    {
        public string Line1 { get; set; }
        public string Line2 { get; set; }
        public string City { get; set; }
        public string PostalCode { get; set; }
        public string Country { get; set; }
    }
    public  enum Role
    {
        Admin,
        User,
        Guest
}


PersonController.cs

 

   public class PersonController : Controller
   {
        public ActionResult CreatePerson()
        {
            return View(new Person());
        }
 
        [HttpPost]
        public ActionResult CreatePerson(Person person)
        {
            return View(person);
        }
   }


 

Route:

      

     routes.MapRoute(
name: "FormRoute",
url:"app/forms/{controller}/{action}"
);
        }

View(CreatePerson.cshtml)


<html>
@modelMVCHelperStudy.Models.Person
@{
   ViewBag.Title = "CreatePerson";
 
}
<h2>CreatePerson</h2>
<body>
 
   @using(Html.BeginRouteForm("FormRoute", new {},FormMethod.Post,
new { @class ="personClass", data_formType="person"})) {
<div  class="dataElem">
<label>PersonId</label>
@Html.TextBoxFor(m =>m.PersonId)
</div>
<div class="dataElem">
<label>FirstName</label>
@Html.TextBoxFor(m => m.FirstName)
</div>
<div class="dataElem">
<label>LastName</label>
@Html.TextBoxFor(m =>m.LastName)
</div>
<div class="dataElem">
<label>Role</label>
@Html.DropDownListFor(m =>m.Role,
new SelectList(Enum.GetNames(typeof(MVCHelperStudy.Models.Role))))
</div>
<input type="submit" value="Submit" />
}
 
</body>
</html>


测试运行:


首先,使用模板方法重构View

把表单中间代码替换为:

<div class="dataElem">
<label>PersonId</label>
@Html.Editor("PersonId")
</div>
<div class="dataElem">
<label>FirstName</label>
@Html.Editor("FirstName")
</div>
<div class="dataElem">
<label>LastName</label>
@Html.EditorFor(m =>m.LastName)
</div>
<div class="dataElem">
<label>Role</label>
@Html.EditorFor(m => m.Role)
</div>
<div class="dataElem">
<label>BirthDate</label>
@Html.EditorFor(m =>m.BirthDate)
</div>


 

代码说明:使用了Html.Editor替代以前的实现。

看一下生成的html