ASP.NET MVC3 实例(六) 增加、修改和删除操作(二)

来源:互联网 发布:lol淘宝刷点券会封号吗 编辑:程序博客网 时间:2024/05/17 06:40
 

上篇我们在 ASP.NET MVC3 中实现了添加操作,由于时间关系没有完成修改、删除操作,我们新建了一个名为"Contact"的 Controller,并实现了添加方法,下边就让我们在此基础上来完成 ASP.NET MVC3 中的修改和删除操作。

首先,我们在 Contact 控制器类中添加一个名为 View()的方法,用来从 Contact 表中取出留言数据,并传递给列表页 "Index",方法如下:

//// GET: /Contact/public ActionResult Index(){    var contact = from c in android.Contact                    where c.IsValid == 1                    orderby c.ID descending                    select c;    return View(contact.ToList());}

我们使用 Linq 从 Contact 表中取出了所有有效数据(IsValid==1),并按ID降序显示。接下来,添加名为"Index"的视图,最终 "Index" 全部代码如下:

@model IList<Android.Models.Contact><p>    @Html.ActionLink("Create New", "Create")</p><table>    <tr>        <th>            UserName        </th>        <th>            Content        </th>        <th>            Addtime        </th>    </tr>    @foreach (var item in Model) {    <tr>        <td>            @item.UserName        </td>        <td>            @item.Content        </td>        <td>            @item.Addtime        </td>        <td>            @Html.ActionLink("编辑", "Edit", new { id=item.ID }) |            @Html.ActionLink("删除", "Delete", new { id = item.ID })        </td>    </tr>}    </table>

可以看到,显示用的代码是非常整洁的,我们没有做样式方面的美化,最终的列表页效果如下:

ASP.NET MVC3 留言列表页

修改操作、删除操作传递的参数都是留言ID,首先,我们看看修改操作,分别给 "Contact" Controller 添加名为 Edit() 两个方法,1.用来根据根据ID得到留言实体,并返回给编辑页;2.完成修改操作。如下:

//// GET: /Contact/Edit/5public ActionResult Edit(int id){    var message = android.Contact.Single(m => m.ID == id);    return View(message);}//// POST: /Contact/Edit/5[HttpPost]public ActionResult Edit(int id, FormCollection collection){    try    {        var message = android.Contact.Single(m => m.ID == id);        UpdateModel(message);        android.SaveChanges();        return RedirectToAction("Index");//返回到列表    }    catch    {        return View();    }}

为了简洁起见,修改时我们只修改留言是否有效,其他的和这个类似,"Edit"视图最终代码如下:

@model Android.Models.Contact@using (Html.BeginForm()) {    <fieldset>        <legend>Contact</legend>            @Html.HiddenFor(model => model.ID)        <div class="editor-label">            @Html.LabelFor(model=>model.Content,"留言内容")        </div>        <div class="editor-field">            @Model.Content        </div>                    <div class="editor-label">            @Html.LabelFor(model => model.IsValid,"是否有效")        </div>        <div class="editor-field">            有效 @Html.RadioButtonFor(model=>model.IsValid,1)            无效 @Html.RadioButtonFor(model=>model.IsValid,0)        </div>            <p>            <input type="submit" value="Save" />        </p>    </fieldset>}

页面的效果如下图所示:

ASP.NET MVC3 留言编辑页

其中RadioButtonFor同LabelFor使用方法类似,这样当我们点击列表页中的"编辑"时,先执行第一个"Edit"方法,根据ID将实体返回到我们的编辑页。当我们点击"Save"提交时,执行第二个"Edit"方法,并对数据库中的"Contact"表进行了修改操作,这样实现了在 ASP.NET MVC3 中的修改操作。

下边看看删除操作,"Contact" 控制器类中的删除方法只使用 Get 方式的就行,因为我们将根据传递过来的ID直接进行删除操作,如下:

//// GET: /Contact/Delete/5public ActionResult Delete(int id){    try    {        var contact = android.Contact.Single(c => c.ID == id);        android.DeleteObject(contact);        android.SaveChanges();    }    catch    {    }    return RedirectToAction("../Contact");}

当然了此时的"Delete" 视图完全为空也是可以的。删除操作执行后返回到我们的留言列表中,到这里删除操作就完成了。这里使用真删除是为了说明DeleteObject()方法,一般这种情况我们只需将"IsValid"字段修改为0即可,并不做真删除。还有一点要注意的是,例子中使用try进行异常的处理,因为 Linq 查询时会在有问题时抛出相应的异常、SaveChanges()也会抛出异常。

从这两篇文章我们不难发现,在 ASP.NET MVC3中我们不再需要手动写代码来接收参数了,你可以在添加、修改操作中看到我们并没有手动写代码来接收以"Post"方式提交过来的表单数据。如果你看的 MVC 3中的有些文章还在使用Request["parameter"]、Request.Form["parameter"]、Request.QueryString["parameter"]、collection["parameter"](collection 是 FormCollection 类对象)的方式接收参数,你就需要注意下了。当然,ASP.NET MVC3中还有非常多的特征,本系列还将会进行介绍。

好了,到这里就完全实现了在 ASP.NET MVC3中的增加、修改、删除操作,希望对很多新学 ASP.NET MVC3 的朋友能带来一些帮助。