ASP.NET MVC Action以强类型的方式接收表单数据
2011-07-05 16:23
507 查看
Action方法,以强类型的方式接收表单数据
第一种方法:通过FormCollection类型的Action方法参数来接受全部表单数据,而后使用UpdateModel()把表单数据写入强类型实例。 [AcceptVerbs(HttpVerbs.Post)]public ActionResult Edit(int id, FormCollection formValues)
{
Dinners dinners = dinnerRepository.GetDinners(id);
try
{
UpdateModel(dinners);
dinnerRepository.Save();
return RedirectToAction("Details", new { id = dinners.DinnerID });
}
catch
{
ModelState.AddRuleViolations(dinners.GetRuleViolations());
return View(dinners);
}
} 第二种方法:直接使用一个强类型作为Action方法的参数来把表单数据写入强类型参数变量中。 [AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Dinners dinners)
{
if (ModelState.IsValid)
{
try
{
dinners.HostedBy = "SomeUser";
dinnerRepository.Add(dinners);
dinnerRepository.Save();
return RedirectToAction("Details", new { id = dinners.DinnerID });
}
catch
{
ModelState.AddRuleViolations(dinners.GetRuleViolations());
}
}
return View(dinners);
} 默认情况下,第一种情况UpdateModel()方法试图把所有表单项都匹配到强类型的属性。第二种情况也是如此,会自动试图把所有表单项全部都应赋值给强类型参数变量。但是有时,我们可能只想或者表单项中只有一部分数据能都应赋值给强类型属性集。
在表单数据被映射使用的地方作出限定
使用UpdateMode时: [AcceptVerbs(HttpVerbs.Post)]public ActionResult Edit(int id, FormCollection formValues)
{
Dinners dinners = dinnerRepository.GetDinners(id);
//指定模型对象可更新的属性列表
String[] allowPropery = new[] { "Title", "Description", "ContactPhone" };
try
{
//使用UpdateModel重载方法
UpdateModel(dinners,allowPropery);
dinnerRepository.Save();
return RedirectToAction("Details", new { id = dinners.DinnerID });
}
catch
{
ModelState.AddRuleViolations(dinners.GetRuleViolations());
return View(dinners);
}
}
Action参数为强类型时: [AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Include="Title,Description,ContactPhone")]Dinners dinners)
{
if (ModelState.IsValid)
{
try
{
//没有通过表单赋值的属性,可以手动赋值dinners.HostedBy = "SomeUser";
dinnerRepository.Add(dinners);
dinnerRepository.Save();
return RedirectToAction("Details", new { id = dinners.DinnerID });
}
catch
{
ModelState.AddRuleViolations(dinners.GetRuleViolations());
}
}
return View(dinners);
}
[align=left]直接在类的定义时,作出限定s[/align]
通过添加[Bind]属性到类上,或者在应用程序中的Global.asax文件中(如果类型不是我们自定义的情况下,非常有用),使用Bind属性的Include和Exclude属性来指定类或接口中的那些属性是可以绑定的。using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Linq;
namespace NerdDinner.Models
{
[System.Web.Mvc.Bind(Include="Title,Description,ContactPhone")]
public partial class Dinners
{
}
}
相关文章推荐
- ASP.NET MVC 在控制器中接收视图表单POST过来的数据方法
- ASP.NET MVC中在Action获取提交的表单数据方法
- Jquery下Json数据的传递与解析(asp.net mvc与asp.net api下后台json接收方式的不同)
- Jquery下Json数据的传递与解析(asp.net mvc与asp.net api下后台json接收方式的不同)
- asp.net MVC 中 action中的参数有是集合的属性 视图中表单的设置方式
- Jquery下Json数据的传递与解析(asp.net mvc与asp.net api下后台json接收方式的不同)
- ASP.NET MVC Action的参数名与参数类型不同,导致取不到Request数据
- ASP.NET MVC中在Action获取提交的表单数据方法总结
- ASP.NET MVC中在Action获取提交的表单数据方法总结
- ASP.NET MVC中如何以ajax的方式在View和Action中传递数据
- ASP.NET MVC 在控制器中接收视图表单POST过来的数据方法
- ASP.NET MVC中在Action获取提交的表单数据方法总结 .
- ASP.NET MVC中在Action获取提交的表单数据方法总结
- ASP.NET MVC 在控制器中接收视图表单POST过来的数据方法
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
- ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)
- ASP.NET MVC之表单集合数据自动绑定到对象属性(集合)中
- 在ASP.NET MVC中json的应用(即JsonResult)(asp.net mvc 后台返回json数据方式 )
- ASP.NET MVC下Ajax.BeginForm方式无刷新提交表单