MVC——就酱紫一个系列,这是一个好的开始6

我们继续 今天完善一下 分类的增删改

 

首先 我们在  ClassificationController 新建一个方法 list

然后在Controller 内部实现一个接口

 private IClassificationService classificationService = new ClassificationService();

 

添加list

public ActionResult List()
{
    var list = classificationService.GetAll();
    return View(list.ToList());
}

 

在list内部 右键添加一个新的视图

 

接就有一下代码

@model IEnumerable<Model.Classification>

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>分类列表</title>
</head>
<body>
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table>
        <tr>
            <th>分类名称
            </th>
            <th>封面图片
            </th>
            <th>排序
            </th>
            <th>是否显示
            </th>
            <th>录入时间
            </th>
            <th>操作</th>
        </tr>

        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.Classify)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.CoverPic)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Sort)
                </td>
                <td>
                    @(item.IsDisplay == 0 ? "" : "")
                </td>
                <td>
                    @item.EntryTime.ToString("yyyy-MM-dd")
                </td>
                <td>
                    @Html.ActionLink("修改", "Edit", new { id = item.Id }) |
            @Html.ActionLink("详情", "Details", new { id = item.Id }) |
            @Html.ActionLink("删除", "Delete", new { id = item.Id })
                </td>
            </tr>
        }

    </table>
</body>
</html>

在添加的页面的时候把选用母板页勾去就有 Layout = null;

如果没有勾去 页面是没有这个代码的 默认是引用Shared 文件里面的_Layout.cshtml

可以自己 添加在

@{
    Layout = null;
}

就ok了

 

@(item.IsDisplay == 0 ? "否" : "是")  如果要对字段的数据处理 一定要@()在里面处理

 

继续 添加 create 新增页面

public ActionResult Create()
 {
       return View();
}

这个默认就可 只是为了页面的跳转

看一下页面里面

@model Model.Classification
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>添加分类</title>
</head>
<body>

    <h2>添加分类</h2>
    @using (Html.BeginForm())
    {
        @Html.ValidationSummary(true)

        <fieldset>
            <legend>Classification</legend>

            <div class="editor-label">
                分类名称
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Classify)
                @Html.ValidationMessageFor(model => model.Classify)
            </div>

            <div class="editor-label">
                分类图片
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.CoverPic)
                @Html.ValidationMessageFor(model => model.CoverPic)
            </div>
            <p>
                <input type="submit" value="添加" />
            </p>
        </fieldset>
    }

    <div>
        @Html.ActionLink("返回列表", "List")
    </div>

    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
    }
</body>
</html>

Html.BeginForm() 这个表单提交有12个重构的方法 自己可以看一下 其中包括 可以提交到哪个Controller里面哪个action

还有参数之类的

新增Controllers里面还有个方法

       [HttpPost]
        public ActionResult Create(Classification classification)
        {
            if (ModelState.IsValid)
            {
                classification.Id = GuidToLongID();
                classificationService.Add(classification);
                return RedirectToAction("Index");
            }

            return View(classification);
        }

 

可以看到 [HttpPost] 这个属性 表名是post方式提交数据的

 

接着是修改

public ActionResult Edit(long id = 0)
        {
            Classification classification = classificationService.GetClassification(id);
            if (classification == null)
            {
                return HttpNotFound();
            }
            return View(classification);
        }

        ////
        //// POST: /Classification/Edit/5

        [HttpPost]
        public ActionResult Edit(Classification classification)
        {
            if (ModelState.IsValid)
            {
                classificationService.Update(classification);
                return RedirectToAction("List");
            }
            return View(classification);
        }

修改这里有俩个方法 第一个是 页面跳转 和 加载数据用的 同新增

第二个就是表单提交用的

还有查看详细就比较简单了

        public ActionResult Details(int id = 0)
        {
            Classification classification = classificationService.GetClassification(id);if (classification == null)
            {
                return HttpNotFound();
            }
            return View(classification);
        }

添加个页面

@model Model.Classification


@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>分类详情</title>
</head>
<body>

    <h2>详情</h2>

    <fieldset>
        <legend>分类详情</legend>

        <div class="display-label">
            分类详情
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Classify)
        </div>

        <div class="display-label">
            封面图片
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.CoverPic)
        </div>

        <div class="display-label">
            录入时间
        </div>
        <div class="display-field">
            @Html.DisplayFor(model => model.EntryTime)
        </div>
    </fieldset>
    <p>
        @Html.ActionLink("修改", "Edit", new { id = Model.Id }) |
    @Html.ActionLink("返回列表", "Index")
    </p>

</body>
</html>

今天到这里  写的有点晚了

 

我们的QQ群:

ASP.NET零度交流群

 105568127

posted @ 2013-12-03 23:33  风飞萧雪  阅读(111)  评论(0)    收藏  举报