博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net mvc学习(Vs技巧与Httpcontext)
阅读量:5823 次
发布时间:2019-06-18

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

模型绑定分析

博客模拟的表单已经可以包含网站开发过程中遇到的大部分的表单格式了,包含一些数组、对象等等。

1、直接拼接字符串

$.ajax({    url: "/XXX",    type: "post",    data: "name=Emrys&age=26&bobbys[0]=足球&star[0].movie=琅琊榜",    success: function (r) {        console.log(r);    }});

2、javascript对象

var data1 = { name: "Emrys" };data1.age = 26;data1["bobbys[0]"] = "足球";data1["star[0].movie"] = "琅琊榜"; $.ajax({    url: "/",    type: "post",    data: data1,    success: function (r) {        console.log("xxxxxxxxxxxxxx");        console.log(r);    }});

你可以选择不同的情况选择不同的拼接方式,当然你也可以把后台方法搞成对象每个字段

 

利用Vs data 生成 model

选择你的data

 

$.ajax({    url: "/",    type: "post",    data: {        "name": "Emrys",        "age": "26",        "bobbys": ["足球", "电影"],        "company": {            "name": "上海xxxxxx公司",            "address": "上海徐汇区xxxx路",            "tel": [                "021-88888881",                "021-88888882",                "021-88888883",                "021-88888884"            ]        }    },    success: function (r) {        console.log(r);    }});

 

复制data 选择性粘贴 将Json黏贴为类

 

我们在asp.net mvc中的开发中肯定会封装httpcontext,我们可以在其中获得很多东西,也可以在httpcontext中写入需要返回客户端的信息,但像一些有野心的人,是远远不够的。

WebWorkContext.cs:
public class WebWorkContext    {        ///         /// 判断用户是否登录        ///         public bool IsLogin { get; set; }        ///         /// 用户ID        ///         public int UserId { get; set; }        ///         /// 用户名称        ///         public string UserName { get; set; }        ///         /// 用户邮箱        ///         public string UserEmail { get; set; }        ///         /// 是否是Get请求        ///         public bool IsGet { get; set; }        ///         /// 是否是Ajax请求        ///         public bool IsAjax { get; set; }    }

BaseController.cs中继续于Controller

public class BaseController : Controller    {        ///         /// 创建上下文Context        ///         protected WebWorkContext WorkContext = new WebWorkContext();        ///         /// 重写Controller中的Initialize方法。在此方法中获取用户和其他的信息        ///         ///         protected override void Initialize(RequestContext requestContext)        {            base.Initialize(requestContext);            // 判断用户信息            if (!string.IsNullOrEmpty(Convert.ToString(Session["USERID"])))            {                WorkContext.IsLogin = true;                WorkContext.UserId = Convert.ToInt32(Session["USERID"]);                WorkContext.UserName = Convert.ToString(Session["USERNAME"]);                WorkContext.UserEmail = Convert.ToString(Session["USEREMAIL"]);            }            // 判断是否是Get请求            WorkContext.IsGet = requestContext.HttpContext.Request.HttpMethod == "GET";            // 判断是否是Ajax请求            WorkContext.IsAjax = requestContext.HttpContext.Request.IsAjaxRequest();        }    }

控制器中使用BaseController

public class HomeController : BaseController    {        public ActionResult Index()        {            var userId = WorkContext.UserId;             var userName = WorkContext.UserName;             return View();        }    }}

在View(cshtml)中BaseController

我们之所以可以在view中使用html/Model/ajax 都是因为我们继承了WebViewPage。

那我们如何让View能够干我们想干的事情呢,我们可以自定义一个类去重写WebViewPage

public abstract class WebWorkContextWebViewPage
: System.Web.Mvc.WebViewPage
{ public WebWorkContext WorkContext; public sealed override void InitHelpers() { base.InitHelpers(); BaseController baseController = ((this.ViewContext.Controller) as BaseController); if (baseController != null) { WorkContext = baseController.WorkContext; } } }

我们再去更改view的继承

 我们看一看如何去使用

***需要注意的是:这里需要注意的是,我们观察代码就知道,View中的WebWorkContext其实是获取BaseController中的,所以使用WebWorkContext的View所对应的Controller必须继承BaseController

@{    ViewBag.Title = "Home Page";}用户的邮箱是: @WorkContext.UserEmail
用户名是: @WorkContext.UserName
@{ var id = WorkContext.UserId;}

 

 友情链接http://www.cnblogs.com/emrys5/

转载于:https://www.cnblogs.com/ZaraNet/p/9765324.html

你可能感兴趣的文章
logging模块学习:basicConfig配置文件
查看>>
Golang 使用 Beego 与 Mgo 开发的示例程序
查看>>
+++++++子域授权与编译安装(一)
查看>>
asp.net怎样在URL中使用中文、空格、特殊字符
查看>>
路由器发布服务器
查看>>
实现跨交换机VLAN间的通信
查看>>
jquery中的data-icon和data-role
查看>>
python例子
查看>>
环境变量(总结)
查看>>
ios之UILabel
查看>>
Java基础之String,StringBuilder,StringBuffer
查看>>
1月9日学习内容整理:爬虫基本原理
查看>>
安卓中数据库的搭建与使用
查看>>
AT3908 Two Integers
查看>>
渐变色文字
查看>>
C++ 0X 新特性实例(比较常用的) (转)
查看>>
node生成自定义命令(yargs/commander)
查看>>
各种非算法模板
查看>>
node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)
查看>>
如何创建Servlet
查看>>