【MVC】学习笔记
本帖最后由 李维强-15级 于 2019-8-18 02:01 编辑基本概念教程:
http://www.cnblogs.com/duanshuiliu/tag/MVC/
或者百度搜索:“全网 MVC”
路由控制:
http://www.cnblogs.com/firstcsharp/p/3741600.html
理解控制器工作原理:里面讲了ActionResult的6种返回形式(ContentResult,ViewResult)等
http://www.tracefact.net/Asp-Net/AspNetMvc-Controller.aspx
下面是ActionResult(12种)的简单应用
http://www.cnblogs.com/xielong/p/5940535.html
MVC参数传递,从控制器中传参数到VIEW,里面讲了M层处理参数配置,VIEW只管显示,C层才是逻辑处理然后返回给VIEW显示,最终都是传一个model给VIEW,MVC框架结构体现
http://www.cnblogs.com/powertoolsteam/p/MVC_two.html
MVC 控制器与控制器之间传递参数
http://www.cqutlab.cn/forum.php?mod=redirect&goto=findpost&ptid=177&pid=989&fromuid=8
HTMLHelper总结
HTMLHelper总结
Session设置和cookies的关系 讲得很详细了
MVC 多级控制器子目录,多级Views的子目录建立
扩展XMLResult的例子,注意看其整个result的原理
使用区域,路由多级控制的王道
控制器上添加自定义过滤
asp.net MVC 应用程序的生命周期
MVC后台接收数组对象
后台是List数据,传递到前台,用@Html.Raw(Json.Encode(ViewBag.FuncList)); 其中FuncList是后台的List 本帖最后由 李维强-15级 于 2017-6-10 16:06 编辑
Razor的基本概念
http://www.cnblogs.com/dengxinglin/p/3352078.html
控制器向VIEW传参数的几个方法 razor的
http://blog.csdn.net/chao88552828/article/details/9051117
MVC Razor模板引擎 @RenderBody、@RenderPage、@RenderSection及Html.RenderPartial、Html.RenderAction
http://www.cnblogs.com/xlhblogs/archive/2013/06/09/3129449.html 本帖最后由 李维强-15级 于 2017-3-31 22:40 编辑
上传文件相关的东西,
合并路径用Path.Combine
Path.Combine(Request.MapPath("~/Upload"), Path.GetFileName(file.FileName));
Razor相关示例: http://www.cnblogs.com/zhouhb/p/3906714.html
JS前端获取文件大小
http://www.cnblogs.com/ningvsban/archive/2013/06/04/3117906.html
然后到后端,razor直接用HttpPostedFileBase 这个类接收,或者继承model也可以,在后端再验证大小。
设置config文件限制连接时间以及上传文件大小
http://m.blog.csdn.net/article/details?id=5654883
多图片上传并浏览例程
http://www.jq22.com/jquery-info833 本帖最后由 李维强-15级 于 2017-4-1 22:13 编辑
上传图片到服务器,手写JS练习。研究了我好一段时间,主要还是对razor和jQuery不熟
这里给出例子主要是前端的,就是说文件在用户本地的时候,上传了立马展现出来,只要他不点上传以前,都不管服务器的事情。
主要实现功能是动态新增图片预览,每个图片右上角配删除字样,可以点击删除。另附后台MVC代码。
由于另外的包括文件大小验证,后缀名验证等,前后台都要做,后面再加上。
下面直接上前端代码:
@using (Html.BeginForm("Upload", "Test", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div id="DIV_picField">
<div onclick='btnAction(this)' class='UploadPicPlus' style='position:relative;display:inline-block;height:100px;width:100px;background-image:url(../../Content/upImg/IMGEmpty.png);'>
<input type="file" name="ImgUpload" style='position:absolute;bottom:2px;display:none;' onchange="FileSelected(this)" />
</div>
</div>
<input type="submit" value="picUp" name="myPicUp" />
}
<script type="text/javascript">
var PicCount = 1;
function btnAction(obj) {
$(obj).children("input").click(this);
PicCount++;
}
function btnDel(obj) {
$(obj).parent().remove();
}
function FileSelected(obj) { //文件选择后的相应函数
//先获取一个文件
var UpIMG = obj.files;
//把删除字样加到DIV右上角
$(obj).parent("div.UploadPicPlus").append("<span style='position:absolute; right:2px;font-size:20px;cursor:pointer;' onclick='btnDel(this)'>删除</span>");
//改变DIV的背景,使得看起来是一张图片
$(obj).parent("div.UploadPicPlus").css("background-image", "url(" + window.URL.createObjectURL(UpIMG) + ")");
//去除DIV的onclick事件
$(obj).parent("div.UploadPicPlus").removeAttr("onclick");
//再加一个 图片输入框到刚才那个旁边
$("#DIV_picField").append("<div onclick='btnAction(this)' class='UploadPicPlus' style='position:relative;display:inline-block;height:100px;width:100px;background-image:url(../../Content/upImg/IMGEmpty.png);'>"
+ "<input name='ImgUpload' style='position:absolute;bottom:2px;display:none;'type='file' onchange='FileSelected(this)' /></div>");
}
</script>
然后是后端 这里用razor
//先要到model里面定义个类,由于是接受多个文件,所以用了个list,网上他们用的IEnumerable,暂时还不明白区别,
public class FileUploadViewModel
{
public List<HttpPostedFileBase> ImgUpload {get;set;}
public string upValue { get; set; }
}
然后在controller里面直接这样写即可
public ActionResult Upload(FileUploadViewModel file)
{
//这里文件直接到file里面来了用file.XXX.XXX来取然后操作
return RedirectToAction("Test", "Test");
}
本文关键点,过了太多坑才有如上代码
1)model里面的变量名ImgUpload 要和input里面的name一样,不然razor收不到数据。
2)form表单里面 一定要有enctype = "multipart/form-data"属性
3)$(obj).children("input") 我通过调试,在浏览器里面看到实际上那些parent或者children方法实际上是得到一个obj 这个obj里面有各个元素,所以我用来索引到指定元素,实际上通过页面代码看到也只有一个元素。。
4)特别是parent("div.UploadPicPlus")的时候,如果夫级是div,则要把选择器加个div.XXXX这样才可以append,CSS等操作。我看人家都没这么做,但是我只有这么做了才可以成功。。。。
5)relative和absolute的定位使用区别 夫级用relative 子级用absolute定位
最终效果
安全问题 注入是无处不在的,我们需要防止攻击者来注入,来防止恶意提交写脚本。。。。
下面两篇文章给我讲了原理以及防范方法,特别是第一篇,在我们设计网站的时候,是需要用户提交带HTML标签的文本进来的,所以,需要对敏感信息进行过滤,
http://www.cnblogs.com/onepiece_wang/p/3669728.html
http://blog.sina.com.cn/s/blog_700185a60100q86h.html mvc razor 验证总结
http://blog.csdn.net/wybshyy/article/details/52064253
防止跨站攻击 用@Html.AntiForgeryToken()
http://blog.csdn.net/cpytiger/article/details/8781457 本帖最后由 李维强-15级 于 2017-4-11 21:56 编辑
WEB API
让其默认返回JSON或者XML格式
http://blog.csdn.net/xxj_jing/article/details/48808099
简单使用示例
http://blog.csdn.net/sam1012/article/details/46957173
这里有个WEB API系列讲了怎么做认证
http://www.cnblogs.com/parry/archive/2012/09/27/ASPNET_MVC_Web_API.html
http://www.cnblogs.com/parry/archive/2012/11/09/ASPNET_MVC_Web_API_HTTP_Basic_Authorize.html
http://www.cnblogs.com/parry/p/ASPNET_MVC_Web_API_digest_authentication.html
本帖最后由 李维强-15级 于 2017-5-4 13:17 编辑
使用cookie
http://www.cnblogs.com/firstcsharp/archive/2013/06/08/3127209.html
用filter验证cookie的方法自定义filter
http://blog.csdn.net/u010096526/article/details/46700581 本帖最后由 李维强-15级 于 2017-5-4 23:27 编辑
Session 设置 和cookies的关系 讲得很全面了
http://www.cnblogs.com/panchunting/archive/2012/06/25/ASPNET_Session_Mode.html
直接跳转session会变的解决办法
http://www.cnblogs.com/net-saiya/p/4980960.html
页:
[1]
2