博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一个MVC3做的企业空间项目总结(本人新手,如果有高手进,请多多指教,我不会不对的地方请指正)...
阅读量:6333 次
发布时间:2019-06-22

本文共 3570 字,大约阅读时间需要 11 分钟。

     这两天刚做完一个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 { 
get
set; }
    [Required(ErrorMessage = 
"
必须输入标题
")]
    
public 
string Title { 
get
set; }
    [Required(ErrorMessage = 
"
必须输入发行日期
")]
    
public DateTime ReleaseDate { 
get
set; }
    [Required(ErrorMessage = 
"
必须指定种类
")]
    
public 
string Genre { 
get
set; }
    [Required(ErrorMessage = 
"
必须输入票价
")]
    [Range(
1
100, ErrorMessage = 
"
票价必须在1元到100元之间
")]
    
public 
decimal Price { 
get
set; }
    [StringLength(
5,ErrorMessage = 
"
最多允许输入五个字符
")]
    
public 
string Rating { 
get
set; }
}

 

页面只要把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实现来着,可是和三层的却完全两样,不会实现啊。

刚刚又翻了翻别人的博客,看到一个关于前台后台统一验证的博文,分享大家()

 

 

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

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

你可能感兴趣的文章
linux在shell中获取时间 date巧用
查看>>
PHP CI框架下,如果配置NGINX(根目录和子目录两种模式)
查看>>
用Swift实现一款天气预报APP(一)
查看>>
oracle11g R2 RAC卸载grid
查看>>
Qt中使用QToolBox实现抽屉效果
查看>>
samba来源于网络
查看>>
Page Photos Demo
查看>>
反编译
查看>>
php mysql feature comparison
查看>>
arm 指令集
查看>>
mysql导入导出
查看>>
dede:list调用body内容的实现方法
查看>>
OpenCart 2.x Ajax单页结账扩充功能
查看>>
trim函数
查看>>
开源中国,我来也~
查看>>
mysql 导出某个表的字段
查看>>
java基础之接口
查看>>
[转]敏捷开发中对进度的把握
查看>>
php---------正则判断字符串中是否由汉字 数字 英文字母组成
查看>>
php--------使用js生成二维码
查看>>