在开发过程过,几乎上所有的地方都使用到了前端的请求,比如: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名称与后端中的参数名称一致