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

转载 2011年10月28日 15:22:28
 

上一篇 ASP.NET MVC3 中,大概介绍了下 Razor 中的布局,今天我们看看 ASP.NET MVC3 中的增加、修改和删除操作。我们以一个留言的小例子来说明下,本篇主要内容就是在 ASP.NET MVC3 Razor 布局下实现增、删、改操作以及实体数据的异步验证。

首先,我们再新建一个表,名字命名为"Contact",打开"AndroidDB.edmx"文件,右键选择"从数据库更新模型"。这个前边已经介绍过,这里就不多说,这样在实体层就创建了"Contact"类及它的属性。接下来,我们新添加一个名为"ContactController"的控制器类,用来显示我们的留言表单并实现留言功能。我们先看看Controller中的代码,如下:

public class ContactController : Controller
{
    Android.Models.AndroidEntities android = new AndroidEntities();
    //
    // GET: /Contact/

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

    //
    // POST: /Contact/Create
    [HttpPost]
    public ActionResult Create(Contact contact)
    {
        if (ModelState.IsValid)
        {
            android.AddObject("Contact", contact);
            android.SaveChanges();
            return RedirectToAction("../Home");
        }
        else
        {
            return View(contact);
        }
    }
}   

上边这些代码就是 Controller 中所需的所有代码了,非常简洁,是吧?需要说明的2点是:1.[HttpPostAttribute]表明了只有当表单提交方式为"Post"时,才执行第二个方法,其他情况下执行第一个Create()方法。2.我们使用类 ObjectContext 的方法AddObject()方法进行添加操作,参数分别是属性名和实体,AddToContact()这种方法现在已经弃用了,这点我们需要注意下。关于使用ObjectSet属性可以参考下ASP.NET MVC3 实例(三) 使用 Controller 进行数据的的查询

接下来我们添加 View 模板,用来展示留言表单,在Create()方法上右键单击,Add View,如下图:

添加 View 视图

我们分别选择了 View data class 为"Contact",模板为"Create",得到如下的 View:

@model Android.Models.Contact
<body>    
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    @using (Html.BeginForm()) {
        @Html.ValidationSummary(true)
        <fieldset>
            <legend>Contact</legend>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.UserName)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(model => model.UserName)
                @Html.ValidationMessageFor(model => model.UserName)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Email)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(model => model.Email)
                @Html.ValidationMessageFor(model => model.Email)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Website)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(model => model.Website)
                @Html.ValidationMessageFor(model => model.Website)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.Content)
            </div>
            <div class="editor-field">
                @Html.TextAreaFor(model => model.Content,5,60,"Content")
                @Html.ValidationMessageFor(model => model.Content)
            </div>
            <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>
    }
</body>

这种写法在 ASP.NET MVC 2 里就已经有了,并没有太多可说的,它使用强类型的 HtmlHelper 方法输出相应的 HTML 的标记。看留言内容那里,可知我们可以定义输入框的大小和ID(Name),非常方便。到这里,我们就已经完成了 ASP.NET MVC 3 中的添加操作。当用户点击"Create"按钮时,表单中的数据会自动正确的赋给对应的属性。

我们要时刻记得“用户的输入是邪恶的”,这样我们要对用户的输入进行必要的验证。实体层数据验证的改进也是 MVC 3 中的一大亮点。@Html.ValidationSummary(true)表明我们已经启用了客户端的异步验证,很明显这样可以减少不必要的服务器请求,MVC3中微软全面使用 jQuery 进行客户端的验证。

ASP.NET MVC3中实体数据的验证是非常简单的,业务逻辑分离的非常好,如在验证留言内容时,只需添加如下代码:

[Required(ErrorMessage="不能为空")]
[StringLength(1000, ErrorMessage = "长度在5-1000", MinimumLength = 5)]
public global::System.String Content
{
    get
    {
        return _Content;
    }
    set
    {
        OnContentChanging(value);
        ReportPropertyChanging("Content");
        _Content = StructuralObject.SetValidValue(value, true);
        ReportPropertyChanged("Content");
        OnContentChanged();
    }
}

分别验证了必填和长度两个属性,还有很多属性,我们就不做一一介绍了。最后看下结果,如下:

ASP.NET MVC 3添加操作结果

看来本篇只能介绍下 ASP.NET MVC3 中的添加操作了,修改和删除操作非常类似,我会补上。发表一篇文章确实很花时间,总是感觉有些地方说的不够明白,希望大家支持!

解析ASP.NET Mvc开发之删除修改数据

目录: 从明源动力到创新工场这一路走来 解析ASP.NET WebForm和Mvc开发的区别 解析ASP.NET 和Mvc开发之查询数据实例 解析ASP.NET Mvc开发之EF延迟加...
  • yisuowushinian
  • yisuowushinian
  • 2014年01月04日 23:41
  • 15970

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

上一篇 ASP.NET MVC3 中,大概介绍了下 Razor 中的布局,今天我们看看 ASP.NET MVC3 中的增加、修改和删除操作。我们以一个留言的小例子来说明下,本篇主要内容就是在 ASP....
  • yaoyaoopen
  • yaoyaoopen
  • 2013年07月16日 17:53
  • 1099

Asp.net MVC4 使用EF实现数据库的增删改查

EF的使用 步骤: (1)将EF添加到项目:在Model右击添加新建项 找到ADO.NET实体数据模型,接着。。。 (2)实现数据库的增删改查 查询 (因为在Model中已经添...
  • lzz360
  • lzz360
  • 2013年09月21日 15:11
  • 50318

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

上篇我们在 ASP.NET MVC3 中实现了添加操作,由于时间关系没有完成修改、删除操作,我们新建了一个名为"Contact"的 Controller,并实现了添加方法,下边就让我们在此基础上来完成...
  • qq4267002
  • qq4267002
  • 2011年10月28日 15:24
  • 3909

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

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

Asp.net MVC 3实例学习之ExtShop(六)——登录对话框

      登录对话框将使用jquery提供的对话框,所以不需要添加其它js文件。首先要为登录对话框添加一个表单模型。在Models目录下创建一个“AccountModels”类文件,然后添加一个Lo...
  • tianxiaode
  • tianxiaode
  • 2011年01月23日 15:43
  • 5007

实例讲解在ASP.NET MVC模式通过jQgrid表格操作

  • 2011年05月12日 00:52
  • 6.65MB
  • 下载

Asp.net MVC 3实例学习之ExtShop(二)——创建母版页

      母版页的作用就是将整个网站的公共元素集中起来,便于维护。在本实例中的母版页内容主要如图1所示,将页面中顶部的导航栏、左边的分类栏和底部的版权信息集中起来。图1      在修改母版...
  • tianxiaode
  • tianxiaode
  • 2011年01月19日 23:53
  • 17318

ASP.NET MVC3 实例(二) 使用 Entity Framework 创建实体数据模型

上篇中大体介绍了下 MVC3 以及项目的创建,本篇我们主要看看 MVC3 中实体数据模型的创建。我们创建项目时,使用的是 .NET 4,在 .NET 4 中我们可以使用 Entity Framewor...
  • qq4267002
  • qq4267002
  • 2011年10月28日 15:30
  • 4049

ASP.NET MVC3 实例(三) 使用 Controller 进行数据的的查询

上一篇我们主要介绍了下 MVC3 中实体数据模型(Entity Data Model)的创建,本篇我们将主要介绍下在 MVC3 中使用 Controller 进行数据的的查询。在进行 Controll...
  • w678528
  • w678528
  • 2012年07月21日 10:05
  • 965
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET MVC3 实例(六) 增加、修改和删除操作(一)
举报原因:
原因补充:

(最多只允许输入30个字)