MVC3: 页面向服务传参(view->controller,get,post)
- HttpGet
- HttpPost
- GetPost 总结比较
- ajax get post
编辑页面 Views\Movies\Index.cshtml view:
@Html.ActionLink("Edit", "Edit", new { id=item.ID })
链接前台URL显示为:the previous image is http://localhost:xxxxx/Movies/Edit/4. 等同于在IE地址栏输入URL http://localhost:xxxxx/Movies/Edit?ID=4
对应MVC路由 {controller}/{action}/{id}。在controller中代码为:
//
// GET: /Movies/Edit/5
public ActionResult Edit(int id = 0)
{
Movie movie = db.Movies.Find(id);
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
例2 前台:
//Form Get
<form action="/MyTest/TestHttpGet" method="get">
testHttpGet <input type="text" name="text"/>
<br />
<input type="submit" value="Get"/>
</form>
//Html.BeginForm
<%Html.BeginForm("TestHttpGet", "MyTest", FormMethod.Get);%>
username:<%=Html.TextBox("UserName") %>
password:<%=Html.TextBox("PassWord") %>
<input type="submit" value="BeginFormGet"/>
<%Html.EndForm();%>
后台:
public string TestHttpGet()
{
string str = Request.QueryString["text"];
<form action="/MyTest/TestHttpPost" method="post">
testHttpPost <input type="text" name="name"/>
<br />
<input type="submit" value="Post"/>
</form>
<%Html.BeginForm("TestHttpGet", "MyTest", FormMethod.Get);%>
username:<%=Html.TextBox("UserName") %>
password:<%=Html.TextBox("PassWord") %>
<input type="submit" value="BeginFormGet"/>
<%Html.EndForm();%>
</pre>后台:</div><div><pre name="code" class="html"> [HttpPost]
public string TestHttpPost()
{
string str =Request.Form["name"];
string name = Request.Form["Name"];
string pwd = Request.Form["PassWord"];
return "HelloHttpPost "+str+name+pwd;
}
3)Get Post 总结比较
请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。幂等:对同一URL的多个请求应该返回同样的结果。
POST是没有大小限制的,HTTP协议规范也没有进行大小限制,说“POST数据量存在80K/100K的大小限制”是不准确的,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。对于ASP程序,Request对象处理每个表单域时存在100K的数据长度限制。但如果使用Request.BinaryRead则没有这个限制。
request forgery攻击。
get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
看百度百科总结如下,更简短点;
1. get是从服务器上获取数据,post是向服务器传送数据。
2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。 建议:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
4) ajax post get
//View
<script type="text/javascript">
function GetTime() {
$.get("Home/GetTime", function (response) {
$("#myPnl").html(response);
});
return false;
}
</script>
<div id="myPnl" style="width: 300px; height: 30px; border: 1px dotted silver;">
</div>
<a href="#" onclick="return GetTime();">Click Me</a>
//Control
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">public ActionResult GetTime()</span>
{
return Content(DateTime.Now.ToString());
}
@Post
//view
<script type="text/javascript">
$(document).ready(function () {
<span style="white-space:pre"> </span> $.post("Home/GetTime",
{val1:"bailang",city:"beijing"},
<span style="white-space:pre"> </span>function (data,status) {
<span style="white-space:pre"> </span>$("#myPnl2").html(data+status);
});
$("#btn").click(function () {
$.ajax({
type: 'Post',
url: "/MyTest/MyAjax",
data:{
val1: $("#ajaxInput").val(),
val2: $("#ajaxInput2").val(),
val3: "val3333",
val4:"val444"
},
dataType: "json",
success: function (data) {
alert("ajax success");
},
error: function () {
alert("ajax error")
}
});
});
});
//Control
[HttpPost]
public string MyAjax(string val1)
{
string val2 = Request["val2"].ToString();
string val3 = Request.Form["val3"].ToString();
string val4 = Request.Params["val4"].ToString(); return val1;
}
[HttpPost]
public ActionResult PostTime()
{
var fname=Request.Form["name"];
var city=Request.Form["city"];
Response.Write("Dear "+fname);
Response.Write("Hope you live well in " +city);
return Content(DateTime.Now.ToString());
}
[HttpPost]
public ActionResult SaveUser(UserModel userModel)
{
//Save User Code Here
//...... if (Request.IsAjaxRequest())
return Content("Save Complete!");
else
return View();
}
MVC3: 页面向服务传参(view->controller,get,post)的更多相关文章
- 小程序页面跳转传参-this和that的区别-登录流程-下拉菜单-实现画布自适应各种手机尺寸
小程序页面跳转传参 根目录下的 app.json 文件 页面文件的路径.窗口表现.设置网络超时时间.设置多 tab { "pages": [ "pages/index/i ...
- js实现静态页面跳转传参
最近有个项目: 存静态web服务,一个新闻页面列表出所有新闻摘要信息,然后通过点击新闻详情访问到该新闻的详情页面: 新闻展示的页面通过ajax请求接口获取到新闻的摘要信息,预计想通过id的方式访问到新 ...
- 页面ajax请求传参及java后端数据接收
js ajax请求传参及java后端数据接收 Controller: package com.ysl.PassingParameters.controller; import java.util.Li ...
- 微信小程序——动态渲染页面、路径传参
1.动态渲染页面.改变css.样式必须setData渲染过去 this.setData({ userInfo: app.globalData.userInfo, token: app.glob ...
- vue 页面跳转传参
页面之间的跳转传参,正常前端js里写 window.location.href="xxxxx?id=1" 就可以了: 但是vue不一样 需要操作的是路由history,需要用到 V ...
- 【转】request和response的页面跳转传参
下面是一位园友的文章: jsp或Servlet都会用到页面跳转,可以用 request.getRequestDispatcher("p3.jsp").forward(request ...
- vue-router实现登录和跳转到指定页面,vue-router 传参
定义路由的时候可以配置 meta 字段: const router = new VueRouter({ routes: [ { path: '/foo', component: Foo, childr ...
- 小程序页面跳转传参参数值为url时参数时 会出现丢失
当参数的值为url的时候, ?号 _ 下划线 等等 都会被 截取掉,看不到, 这样在 另一个页面 options中 截取的url就不完全 let url="http://ba ...
- 微信小程序页面跳转传参
1.传递参数方法 使用navigatior组件 <navigator url="/pages/pull/pull?title=lalla&name=cc" hov ...
随机推荐
- 模板 - Floyd
void Floyd(){ for(int k = 1; k <= n; ++k) { for(int i = 1; i <= n; ++i) { for(int j = 1; j < ...
- 剑指offer-顺序打印二叉树节点(系列)-树-python
转载自 https://blog.csdn.net/u010005281/article/details/79761056 非常感谢! 首先创建二叉树,然后按各种方式打印: class treeNo ...
- 锋利的jQuery ——jQuery选择器(二)
一.jQuery选择器 1)CSS选择器 CSS选择器有:1>标签选择器 E{CSS规则} 2>ID选择器 #ID{CSS规则} 3>类选择器 E.className{CSS ...
- mv - 移动 (改名) 文件
摘要 mv [选项]... 源文件 目标文件 mv [选项]... 源文件... 目录 mv [选项]... --target-directory=DIRECTORY SOURCE... 描述 改“源 ...
- C++中vecotr表示二维数组并自己实现一个Grid类
1 C++中使用vector来表示二维数组 声明一个二维数组: vector<vector<int>> dp(row, vector<int>(col)); 将变量 ...
- svn 命令行使用总结
1.上传项目到SVN服务器上 svn import project_dir(本地项目全路径) http://192.168.1.242:8080/svn/IOS/Ben/remote_dir(svn项 ...
- java并发学习--第九章 指令重排序
一.happns-before happns-before是学习指令重排序前的一个必须了解的知识点,他的作用主要是就是用来判断代码的执行顺序. 1.定义 happens-before是用来指定两个操作 ...
- java代码实现H5页面
public void getH5(HttpServletResponse response){ StringBuffer res=new StringBuffer(); res.append(&qu ...
- Vue-搭建环境
项目开发完react-native,因为又对vue开始感兴趣了,又开始自学起了vue,关于vue是一个很简便的前端框架,要学习它,当然是要先学会搭建vue的环境, 不会搭建环境的程序员不是一个好的程序 ...
- 【BZOJ1488】[HNOI2009]图的同构计数
题目链接 题意 求 n 个点的同构意义下不同的图的数量.\((n\leq 60)\) Sol \(Polya\) 定理的练手题. 我们这里先把边的存在与否变成对边进行黑白染色,白色代表不存在,这样就变 ...