在ASP .NET MVC中,控制器操作方法可以访问通过HTTP请求提交的各种输入数据,包括表单数据、查询字符串、Cookies、路由值和提交的文件等。以下是针对每种获取数据的方法的详细说明:
1.通过Request读取输入数据:
通过Request读取输入数据,其对象及子集包括Form、Cookies、ServerVariables、QueryString。例如:
public ActionResult MyAction()
{
string value = Request["fieldName"];//或者Request.Parms["UserName"];
return View();
}
2.通过FormCollection读取数据:
FormCollection用来在Controller中获取页面表单元素的数据。它是表单元素的集合,包括<input type=“submit” />元素,
例如:
public ActionResult MyAction(FormCollection form)
{
string value = form["UserName"];
return View();
}
3.通过动作参数读取数据:
在动作方法中添加String类型的参数,其名称与视图参数名称相同。例如:
[HttpPost]
public ActionResult MyAction(string UserName)
{
// 处理逻辑
return View();
}
4.从路由中获取输入数据:
在ASP.NET MVC中,通常会通过URL提供输入的参数。这些值由路由模块捕获,并可供应用程序使用,使用的是RouteData.Values字典。例如:
routes.MapRoute(
name: "ParamRoute",
url: "{controller}/{action}/{data}"
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
//->string data= RouteData.Values["data"].ToString();
5.ValueProvider字典:
ValueProvider字典提供了以GetValue()方法为中心的自定义编程接口,返回ValueProviderResult类型的一个实例。该类型有两个用于实际读取真实参数值的属性:RawValue和AttemptedValue, RawValue是提供的原始值(即指定Key值的String[ ]的集合),AttemptedValue是一个字符串(即指定Key值对应的value值),使用方法如下所示:
public ActionResult GetValue()
{
string userNmae = ValueProvider.GetValue("UserName").AttemptedValue;
return View();
}
通过以上这些方法,可以在ASP .NET MVC应用程序中获取和处理各种类型的HTTP请求数据。
视图代码
<form action="/Home/Index" method="post">
<h3>@ViewBag.name</h3>
<input type="text" name="UserName" placeholder="请输入用户名" />
<input type="submit" name="Submit" value="提交" />
</form>