一、Action

1、Action参数: 普通参数、Model类、FormCollection

(1)、普通参数 Index(string name,int age)   框架会自动把用户请求的QueryString 或者Post表单中的值根据参数名字映射对应参数的值,适用于查询参数比较少的情况。

        public ActionResult F3(string name, int age)
{
return Content("姓名:" + name + "年龄:" + age);
}

(2)、Model类: 这种类叫ViewModel

        public ActionResult Index(IndexModel model)
{
return View(model);
}

(3)、 FormCollection ,采用fc["name"]这种方式访问,适用于表单元素不确定的情况,用的比较少。

        public ActionResult F2Show()
{ return View();
}
public ActionResult F2(FormCollection fc)
{
string name = fc["name"];
string age = fc["age"];
return Content("姓名:" + name + "年龄:" + age);
}
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>F2Show</title>
</head>
<body>
<form action="~/Test/F2" method="post">
<input type="text" name="name" />
<input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>

(4)  一部分是普通参数,一部分Model:

        public ActionResult Index(IndexModel model,string department)
{
return Content(model.Num1+model.Num2+department);
}

(5) 添加默认值,默认值参数在最后

        public ActionResult F3(string name, int age=)
{
return Content("姓名:" + name + "年龄:" + age);
}

2、 Action 方法不能重载,除了加上[HttpGet] 、[HttpPost] 标记

        [HttpGet]
public ActionResult F4()
{ return View();
} [HttpPost]
public ActionResult F4(string name,int age)
{ return Content("姓名:" + name + "年龄:" + age);
}
<body>
<form action="~/Test/F4" method="post">
<input type="text" name="name" />
<input type="text" name="age" />
<input type="submit" />
</form>
</body>

二、View

1.

        public ActionResult F2Show()
{
// return View();
return View("F2"); //找F2.cshtml显示
}

2、 显示View的时候传递Model

        public ActionResult F2Show()
{
IndexModel model = new IndexModel();
model.Num1 = ;
return View("F2",model); //第二个参数是Model
}
        public ActionResult F2Show()
{
string name = "wang";
return View("F2",(object)name); //第二个参数是Model
} //cshtml页
@model string

二、ActionResult

1、 View()  是一个方法,返回值是ViewResult 类型,ViewResult继承自ActionResult

三、Json

JsonResult Json(object data) 把data对象序列化成json字符串返回给客户端,并且设置 contentType为“application/json”.

json 方法是默认禁止Get请求的(主要是为了防止CSRF攻击,ajax请求无法跨域),如果需要调用Get请求: return Json(p1,JsonRequestBehavior.AllowGet)

        public ActionResult JsonTest1()
{
var p1 = new { Name = "chen", Age = };
return Json(p1); //默认Post请求 } public ActionResult J1()
{
return View();
}
    <script src="~/Scripts/jquery-1.10.2.js"></script>
<script type="text/javascript">
$(function () {
$("#btn1").click(function () {
$.ajax({
url: "/Test/JsonTest1",
type: "post",
datatype: "json",
success: function (obj) {
alert(obj.Name)
},
error: function () {
alert("error")
} })
}
)
}
)
</script>
      <button id="btn1">点我</button>

json缺点:

1、 日期类型转化成的字符串是“/Date(1532585581810)/”这样格式的,在客户端要用js代码格式化处理麻烦;

2、 json字符串中属性的名字和C#中的大小写一样,不符合js中“小写开头,驼峰命名”的习惯;

四、重定向

1、 Redirect(url);

2、RedirectToAction(string actionName,string  controllerName ):其实最终还是拼接成Url,调用Redirect()

3、 相对路径:

      "." -- 代表目前所在的目录,相对路径。
".." -- 代表上一层目录,相对路径。
"../../" -- 代表的是上一层目录的上一层目录,相对路径。

./ 表示在当前路径下,

../表示在当前路径的上一级路径下.

~/表示当前网站的根目录下.

4、Redirect 和return View的区别:

(1) Redirect 是让浏览器重定向到新的地址,retun view是让服务器把指定的cshtml的内容运行渲染后给到浏览器;

(2) Redirect 浏览器和服务器之间发生了两次交互,return view浏览器和服务器之间发生了1次交互;

(3) Redirect是两次请求,所以第一次设置的ViewBag等这些信息,在第二次是取不到的,而View则是在同一个请求中,所以ViewBag信息取不到;

(4)   如果用Redirect ,则由于是新的对Controller/Action 的请求,所以对应的Action会被执行到,如果是view,则直接拿某个view去显示,对应的Action是不执行的

(5) 什么情况用view?服务器端产生数据,想让一个view去显示,对应的Action是不执行的;

什么情况用Redirect? 让浏览器去访问另外一个页面的时候;

五、其他:

1、 TempData:

一般用于验证码,一次取了之后,在取就没有了

        public ActionResult T1()
{
TempData["code"] = "";
return View();
} public ActionResult TempData1()
{
string code = (string)TempData["code"];
return Content("code=" + code);
}

2、 进行MVC开发的时候,尽量使用****base类,不要用asp.net内核源生的类;这两个类之间没有继承的关系;

Action参数和View、Json、重定向的更多相关文章

  1. ASP.NET MVC中默认Model Binder绑定Action参数为List、Dictionary等集合的实例

    在实际的ASP.NET mvc项目开发中,有时会遇到一个参数是一个List.Dictionary等集合类型的情况,默认的情况ASP.NET MVC框架是怎么为我们绑定ASP.NET MVC的Actio ...

  2. Jquery发送ajax请求以及datatype参数为text/JSON方式

    Jquery发送ajax请求以及datatype参数为text/JSON方式 1.方式一:datatype:'text' 2.方式二:datatype:'JSON' 3.使用gson-1.5.jar包 ...

  3. MVC扩展ModelBinder使类型为DateTime的Action参数可以接收日期格式的字符串

    原文:MVC扩展ModelBinder使类型为DateTime的Action参数可以接收日期格式的字符串 如何让视图通过某种途径,把符合日期格式的字符串放到路由中,再传递给类型为DateTime的控制 ...

  4. 获取MVC中Controller下的Action参数异常

    我现在做的一个项目有一个这样的需求, 比如有一个页面需要一个Guid类型的参数: public ActionResult Index(Guid id) { //doing something ... ...

  5. ASP.NET Core 2.2 十九. Action参数的映射与模型绑定

    前文说道了Action的激活,这里有个关键的操作就是Action参数的映射与模型绑定,这里即涉及到简单的string.int等类型,也包含Json等复杂类型,本文详细分享一下这一过程.(ASP.NET ...

  6. EF5+MVC4系列(7) 后台SelectListItem传值给前台显示Select下拉框;后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式(ViewDate,TempDate,ViewBag,Model (实际是ViewDate.Model传值))

    一:后台使用SelectListItem 传值给前台显示Select下拉框 我们先来看数据库的订单表,里面有3条订单,他们的用户id对应了 UserInfo用户表的数据,现在我们要做的是添加一个Ord ...

  7. ASP.NET MVC 5使用Filter过滤Action参数防止sql注入,让你代码安全简洁

    在开发程序的过程中,稍微不注意就会隐含有sql注入的危险.今天我就来说下,ASP.NET mvc 5使用Filter过滤Action参数防止sql注入,让你代码安全简洁.不用每下地方对参数的值都进行检 ...

  8. MVC扩展ModelBinder,通过继承DefaultModelBinder把表单数据封装成类作为action参数

    把视图省.市.街道表单数据,封装成一个类,作为action参数.如下: action方法参数类型: namespace MvcApplication1.Models{    public class ...

  9. AOP实践—ASP.NET MVC5 使用Filter过滤Action参数防止sql注入,让你代码安全简洁

    在开发程序的过程中,稍微不注意就会隐含有sql注入的危险.今天我就来说下,ASP.NET mvc 5使用Filter过滤Action参数防止sql注入,让你代码安全简洁.不用每下地方对参数的值都进行检 ...

随机推荐

  1. vuejs给组件绑定原生事件

    给组件绑定事件,该事件是自定义的事件 <div id='root'> <child @click='handleClick'></child> </div&g ...

  2. flex布局-常用布局

    在使用flex布局,老是需要去查资料,很多常用的,知道大概,可还是需要去过一遍,这里记录一下几个常用的flex布局 一个div,内容垂直居中 html <div className='topHe ...

  3. P1316 丢瓶盖

    题目描述 陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以到多少呢? 输入输出 ...

  4. linq 查询的两种方法 (在EF model中实现)

    众所周知:linq查询有两种方式 1.通过linq表达式查询 2.是通过linq方法查询 代码中 每一步都有注释

  5. 3.初识Cron表达式

    Cron: 计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思.在Linux中,我们经常用到 cron 服务器来完成这项工作.cron服务器可以根据配置文件约定的时间来执行特定的作务. ...

  6. linux服务器安装nginx及使用

    Nginx在个人的使用之后,感觉非常的方便,所以在这里给出自己安装配置方案.它是一款高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器.负载均衡是个不错的选择. ...

  7. 写给iOS小白的MVVM教程(序)

    这几天,需要重构下部分代码,这里简要记录下.但是涉及的技术要点还是很多,所以分为多个篇章叙述.此教程来源于,并将于应用于实践,不做过多的概念性阐释和争论.每个篇章都会附上实际的可执行的代码.因涉及的技 ...

  8. iOS提示框,为什么你应该使用 MBProgressHUD?

    这是一篇带有一定笔者主观感情色彩的比较文章.文章着重对比github上最流行的两个iOS进度提示控件 MBProgressHUD 与 SVProgressHUD的各自优劣,来帮助初学者找到一个适合的i ...

  9. 安装阿里云版Linux云服务器,配置软件

    1.  购买域名 2.  购买云服务器ecs 3.  远程访问云服务器并装上Java环境和必备软件 3.1安装远程访问工具 3.2 jdk环境配置 3.3 Mysql依赖关系 重新配置MySQL的远程 ...

  10. Linux crontab 实现秒级定时任务

    1   crontab 的延时: 原理:通过延时方法 sleep N  来实现每N秒执行. crontab -e 输入以下语句,然后 :wq 保存退出. * * * * * /usr/bin/curl ...