MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件(Controller)里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
传统的ASP.NET是吧返回值和数据的逻辑放在了页面上,而MVC最大可能的减少了在页面上显示逻辑的耦合,而是把数据都放在了Controller中,这样我们及时有了业务的改变,也只是修改Controller,而如果是界面的修改,直接修改View,而无需担心不小心把逻辑的代码给修改了。
那么今天我们就简单的介绍一下在MVC中传值的问题,MVC和我们三层一样,因为他去除了传统Aspx页面的耦合,那么他势必带来的就是代码的繁杂(相对),首先必须要向大家说明的是MVC中,数据的传输是View---->JavaScript----->Contoller---->数据库(三层或者直接链接数据库),返回时数据库(三层或者直接从数据库中)---->Controller---->JavaScript---->View。所以接下来我也是这样实现的。
传值分为页面内传值,页面间传值,这两种传值方式在代码上也是有区别的,下面几一一到来。
1、页面内传值
首先是View中,例如我们要实现一个文本框的查询,那么下边我就先简单的画一个文本框和一个按钮
<span style="font-size:14px;"><input id=’ VideoinfoContext’ type=’text’/>
<button id='btn' οnclick=search()>搜索</button>
</span>
然后是JavaScript代码:这里用了Ajax的Post传值方式,讲View中文本框的内容传送给Controller的方法中。
<span style="font-size:14px;">$("#btn").click(function () {
//获取文本框文本信息
var hotInfo = document.getElementById("VideoinfoContext
").val
//ajax传值,将值传给PageHomeController中的NewVideoInfo的方法中
$.ajax({
type: "POST",
url: "/PageHome/NewVideoInfo",
data: { "h": hotInfo },
//讲返回的数据放在content的节点下边
success: function (data) {
$.message.alert("提示", "提交成功", 'info');
$("#content").append(data);
}
</span>
Controller获取JavaScript的值,只需要Request一下即可。代码如下:
<span style="font-size:14px;">int hotInfo = Request["h"] </span>
这样上边的一条先就完成了,首先是在文本框中输入要查询的内容,然后用Ajax的方式来获取文本框中的内容,然后将值传给Controller中,后边的就是查询数据库了,查询到的值会返回到Ajax中的data中,然后把data返回给页面的ID为content中。这样就会在View中显示查询的内容。
2、页面间传值
如果我们需要在页面间传值,那么上边的方法就有些不合适了,因为例如我们要单击查询按钮以后跳转到别的页面去显示查询的内容,可是如果我们跳转完页面,在别的页面里边就不可能有我们的Ajax方法,所以当然不会执行这个方法。所以我们再这里就需要一种Get的取值方式,道理就是我把要查询的内容放在URL地址栏中,然后查询的时候去地址栏获取就可以。
代码如下。
View中:同上边。
<input id=’ VideoinfoContext’ type=’text’/>
<button οnclick=search() href='../../Index'>搜索</button>
javaScript:先定义个查询的函数,然后生成URL,并且加上文本框中的内容。
//模糊查询方法,单击按钮是进行视频信息查询的方法。
function search() {
var searchContent = $("#VideoinfoContext").val();
window.location =
"/PageHome/SearchView?searchContent=" + searchContent;}
这样我们再Controller中获取searchContent就可以了,代码如下。
string strLike = Server.UrlDecode(Request["searchContent"]);
这样我们就可以RUL中=号后边的内容,也就是我么需要的内容,然后进行后边的链接数据库查询,这样一条线也就完成了,把数据返回到页面同页面内传值。
尽管看似两段简单的代码,但是在开始学习的时候还是非常让我头疼的,所以希望这篇文章能为你带来帮组吧。