在开发过程过,几乎上所有的地方都使用到了前端的请求,比如:get请求或者post请求。那么如果来获取请求的参数呢?方法有三种。

 

方法一:使用模型类传递,Model

在前端传递过来的参数,必须要和模型类中的属性名称一致(可以不区分大小写),因为框架的内部将模型类与参数进行了映射关系。

在Action方法中:

public ActionResult F1(Test3Model model)
        {
            return Content(model.id)
        }

Test3Model模型类:

public class Test3Model
    {
        public int id { get; set; }
        public string name { get; set; }
        public float height { get; set; }
        public bool sex { get; set; }
    }

前端传递过来的参数只能是Test3Model模型类中的属性,比如参数只能是id,name,height,sex这些。

所以在Action方法中通过对象名.属性来获取

 

方法二:使用普通参数进行获取请求的参数

public ActionResult F2(string name,int age)
{
       return Content("name="+name+"age="+age);
}

前端传递过来的参数必须是name和age参数,如果想输入一个参数,可以将int改为int?

 

方法三:使用FormCollection获取post方法提交的参数

public ActionResult F3(FormCollection fc)
        {
            string name = fc["name"];
            string age = fc["age"];
            return Content("name=" + name + ",age=" + age);
        }

 

方法四:使用[HttpPost]和[HttpGet]的使用

例子:登录界面

[HttpGet]
        public ActionResult Baoming()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Baoming(BaomingModel model)
        {
            string result = "登录成功!"+model.name;
            return Content(result);
        }

 

如果Action方法上面没有[HttpPost]和[HttpGet]标签时,get请求和post请求都要请求该方法,但是加上去以后,就会分别请求对应的方法。

 

方法五:HttpPostedFileBase类型上传文件

public ActionResult UploadFile()
{
      return View();
}


 [HttpPost]
public ActionResult UploadFile(HttpPostedFileBase f1)
{
   f1.SaveAs(Server.MapPath("~/" + f1.FileName));
     return Content("上传成功!");
}

 

前端:

<form action="/Baoming/UploadFile" method="post" enctype="multipart/form-data">
            <input type="file" name="f1"/>
            <input type="submit" value="提交"/>
        </form>

 

上传的时候必须给表单添加enctype="multipart/form-data",上传控件的name名称与后端中的参数名称一致