ASP.NET MVC 2中是否有类似Django表单(http://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs)?
答案 0 :(得分:3)
我列出了您提供的链接中列出的“主要主题”......
1 - 显示带有的HTML表单 自动生成的窗体小部件。
在ASP.NET MVC中,您可以使用Html.EditorFor(Model)自动生成整个表单。您可以为模型添加您不想构建的任何数据项的属性。
这将生成一个包含每个属性字段的整个表单。
<%= Html.EditorFor(m => m) %>
或者您可以在个别属性上使用它
<%= Html.EditorFor(m => m.FirstName) %>
或者你可以告诉它你想要什么元素
<%= Html.TextBoxFor(m => m.FirstName) %>
2 - 根据一组检查提交的数据 验证规则。
有很多方法可以验证ASP.NET MVC中的数据。您可以添加属性以使模型上的项成为必需项,或确保它们的值在一定范围内等。在MVC 3中,您还可以实现“IValidatable”接口,它将添加“Validate()”对象的方法,您可以将自己的自定义规则添加到。
3 - 重新显示表格 验证错误。
这是开箱即用的MVC,你应该回发到同一页面。它会自动将CSS类添加到验证失败的项目中,并填充和验证占位符/验证摘要。
<%= Html.TextBoxFor(m => m.FirstName) %>
<%= Html.ValidationMessageFor(m => m.Firstname) %>
4 - 将提交的表格数据转换为 相关的Python数据类型。
同样,这是开箱即用的东西。如果您将表单发布到某个操作,MVC会将数据发送到您的模型中。
[HttpPost]
public ActionResult Edit(CustomerModel model) {
// model will automatically populated from the form post...
// Any validation attributes you placed on the model and
// any "natural" validation issues will already have been
// checked (i.e. someone typing "A" into a field that is an int
// on your model
if (ModelState.IsValid) {
_myRepository.Save(model);
return RedirectToAction("Detail", new { id = model.Id });
}
// If validation has failed, you can just return the view again
// so the user can correct the errors
return View(model);
}