Programming ASP.NET MVC-Fundamentals of ASP.NET MVC(八)Putting It All Together

           截止到目前为止,我们已经介绍了组成asp.net mvc应用程序的所有部分,接下来我们put it all together!

           

           添加controller

           因为controller就是一个实现了asp.net mvc controller接口的一个普通的类,所以,我们可以手动在controller文件夹下添加一个类,然后继承system.web.mvc.controller,然后添加action。当然,VS为我们提供了一些工具让我们更加方便地添加controller,右键controller文件夹——添加——controller

         

           接下来,我们修改detail action,在里面生成一个Auction的实例,然后把引用通过 View(object model)方法传到view。如果正常情况下,我们获取信息是从数据库中,在这里我们就先手动的写上去。

          

//
        // GET: /Auctions/Details/5

        public ActionResult Details(int id)
        {
            var auction = new Models.Auction
            {
                Id = id,
                Title = "Brand new Widget 2.0",
                Description = "This is a brand new version 2.0 Widget!",
                StartPrice = 1.00m,
                CurrentPrice = 13.40m,
                StartTime = DateTime.Parse("2012-01-01"),
                EndTime = DateTime.Parse("6-23-2012 12:34 PM")
            };
            return View(auction);
        }
           添加view

           当然我们也可以像添加controller那样,手动地添加view,我们也可以利用VS的自动工具来生成view。


            点击action单击添加视图,我们就会弹出下面的框:


           如果我们选择了模型类,我们还可以选择相应的支架模板,在这里我们选择details

           注:如果我们在模型类的下拉列表里没有找到我们要的类,那么我们只要编译一下就可了!

            当我们单击添加按钮,我们可以看到VS已经分析了model,生成了需要的html代码,也添加了对html helpers的引用,比如用html.displayFor,显示Auction的字段。

            

@model InternetEBuy4.Models.Auction

@{
    ViewBag.Title = "Details";
}

<h2>Details</h2>

<fieldset>
    <legend>Auction</legend>

    <div class="display-label">
         @Html.DisplayNameFor(model => model.Title)
    </div>
    <div class="display-field">
        @Html.DisplayFor(model => model.Title)
    </div>

    <div class="display-label">
         @Html.DisplayNameFor(model => model.Description)
    </div>
    <div class="display-field">
        @Html.DisplayFor(model => model.Description)
    </div>

    <div class="display-label">
         @Html.DisplayNameFor(model => model.StartPrice)
    </div>
    <div class="display-field">
        @Html.DisplayFor(model => model.StartPrice)
    </div>

    <div class="display-label">
         @Html.DisplayNameFor(model => model.CurrentPrice)
    </div>
    <div class="display-field">
        @Html.DisplayFor(model => model.CurrentPrice)
    </div>

    <div class="display-label">
         @Html.DisplayNameFor(model => model.StartTime)
    </div>
    <div class="display-field">
        @Html.DisplayFor(model => model.StartTime)
    </div>

    <div class="display-label">
         @Html.DisplayNameFor(model => model.EndTime)
    </div>
    <div class="display-field">
        @Html.DisplayFor(model => model.EndTime)
    </div>
</fieldset>
<p>
    @Html.ActionLink("Edit", "Edit", new { id=Model.Id }) |
    @Html.ActionLink("Back to List", "Index")
</p>
            接下来,我们来看一下运行情况:


              在用Internet模板生成的代码里,是默认添加了身份验证的,如果我们在上面的action上添加如下代码:

              [Authorize]

             那么我们再访问上面的页面,就会自动跳转到登录页面,详细的讨论我会在后续博文中提到。

发布了138 篇原创文章 · 获赞 11 · 访问量 40万+

猜你喜欢

转载自blog.csdn.net/yjjm1990/article/details/9021617