第一个MVC3做的企业空间项目总结(本人新手,如果有高手进,请多多指教,我不会不对的地方请指正)...

     这两天刚做完一个MVC3项目,因为以前项目经验就很少,之后MVC 0基础就直接做了这个MVC3的项目,所以中间出了很多问题,所以今天就写下第一篇博文总结一下MVC3出现的问题,以及在这个项目中发现的一些小窍门。

1.在做MVC3中做无刷新

方法执行是这样的,要通过一个参数获得一个另一个参数,通过另一个参数得到另一个对象

 

三层中用的ajax.dll是从前往后执行的,通过i获得val1 ,然后再通过val1获得val2,返回val2,条理很清淅

1 function getHtml(i){
2  var val1=Method1(i);
3  var val2=Method2(val1);
4  alert(val2);
5 }

MVC3中是用的是jq ajax 的post方法  这个是先执行post方法体,然后直接执行后面的alert("注意这里"),之后才执行post内部,把data得到赋给val1  然后,再去执行post内部的执行方法,再去执行post(第2个),把方法体执行完再alert(val2)

1  function getHtml(i){
2    $.post("url1",{"i":i} function(data){
3       var val1=data;
4      $.post("url2",{"val1":val1} function(data){
5         var val2=data;
6        alert(val2);  
7       });
8    });
9   alert(" 注意这里");  
10  }

 

刚开始跟着一个教程做了一个MVC的demo,里面使用了mvcModel数据验证,这个东西可以实现前后台统一验证,当时觉得非常不错,前台只要写cs代码就好啦,后台也只是写几个验证字段就可以啦。

首先说下用法吧。(以下代码引用 蓝博网络 的  博客  )

1.引用命名空间System.ComponentModel.DataAnnotations

2.增加一些内建的Required(必须输入),StringLength(输入字符长度)与Range(输入范围)验证规则,如下代码

public  class Movie

{

     public  int ID {  getset; }

    [Required(ErrorMessage =  " 必须输入标题 ")]

     public  string Title {  getset; }

    [Required(ErrorMessage =  " 必须输入发行日期 ")]

     public DateTime ReleaseDate {  getset; }

    [Required(ErrorMessage =  " 必须指定种类 ")]

     public  string Genre {  getset; }

    [Required(ErrorMessage =  " 必须输入票价 ")]

    [Range( 1100, ErrorMessage =  " 票价必须在1元到100元之间 ")]

     public  decimal Price {  getset; }

    [StringLength( 5,ErrorMessage =  " 最多允许输入五个字符 ")]

     public  string Rating {  getset; }

}

 

页面只要把jq验证控件都引用进来,在每个需要验证的jq下面写个引用验证即可。

@model MvcMovie.Models.Movie

@{

    ViewBag.Title =  " 追加电影信息 ";

}

<h2>追加电影信息</h2>

<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>电影</legend>

        <div  class= " editor-label ">

            标题

        </div>

        <div  class= " editor-field ">

            @Html.EditorFor(model => model.Title)

            @Html.ValidationMessageFor(model => model.Title)

        </div>

        <div  class= " editor-label ">

            发行日期

        </div>

        <div  class= " editor-field ">

            @Html.EditorFor(model => model.ReleaseDate)

            @Html.ValidationMessageFor(model => model.ReleaseDate)

        </div>

        <div  class= " editor-label ">

           种类

        </div>

        <div  class= " editor-field ">

            @Html.EditorFor(model => model.Genre)

            @Html.ValidationMessageFor(model => model.Genre)

        </div>

        <div  class= " editor-label ">

            票价

        </div>

        <div  class= " editor-field ">

            @Html.EditorFor(model => model.Price)

            @Html.ValidationMessageFor(model => model.Price)

        </div>

        <p>

            <input type= " submit " value= " 追加 " />

        </p>

    </fieldset>

}

<div>

    @Html.ActionLink( " 返回电影列表 "" Index ")

</div>

这样就可以实现前后台统验证啦,当用户在表单内输入不符合条件的数据,自动提示报错。

当时觉得很牛X,所以就准备用在自己的项目里,可是问题重重

第一,我们用的三层做的,用的aspx引擎,两个有区别啦,连最基本的引用都总搞不懂。

第二,三层的Model层和Mvc3的Models 我到底用哪个做Model,当时就有点蒙

第三,在做页面时教程上只有lable和txt两种,如果用txtArea等我就不知道咋办啦(没办法菜鸟嘛,不知道改哪)

第四, 因为做之前Demo的时候用的Efcodefirst(自动创建数据库),所以所有验证自动匹配到数据库里面啦,所以不能随便添入不完整的数据。()

第五,一个页面只能写一个Form不能重用,如果一个页面有多个表单数据我就不会实现啦

最重要的当时是在给公司做东西,不是自己闲着没事做,可以慢慢学,慢慢做,当时已经开始那个项目啦,真的没有太多时间去研究,所以就直接用最简单的方式  FormCollection collection  collection["txtlianxiren"] 这样的方式一个个的取数据,如果遇到多个form则利用传参的形式判断form是哪个,当时想用ajax实现来着,可是和三层的却完全两样,不会实现啊。

刚刚又翻了翻别人的博客,看到一个关于前台后台统一验证的博文,分享大家(http://club.sm160.com/showtopic-924311.aspx

 

 

刚刚发现明白的小窃门,当然大家也许早已经知道啦,可是我刚知道,谁叫我是新手啦呢

1.在做可重复利用的小模块的时候可以在页面上拼写HTML代码拼接起来,在公用的Models建公用类输出String代码, 在页面上只要留着一个可以灌输的控件即可,比如div,span,等,因为以前总是不注意,所以经常复制粘贴代码到每个页面,最后才发现要改起来好麻烦,所以要学会把公用的东西封装起来。

2.在做显示的图片的时候直接把地址粘上就可以啦,如果找不到的就可以显示一张默认图片,用JS:onError="this.src='/Content/images/spaceimg/noneimg.jpg';"  这样就用不着在后台写xxxx=xxx:do():do2();这样的代码啦

3.

 (上班啦,先写到这里,有时间继续写)

 

转载于:https://www.cnblogs.com/doumingxu/archive/2011/11/29/2266994.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值