//MVC HTML辅助类常用方法记录

(1)@Html.DisplayNameFor(model => model.Title)是显示列名,

(2)@Html.DisplayFor(modelItem => item.Title)是显示列的内容

(3)@Html.ActionLink("Create New", "Create")是超链接,跳转到model中的create页面,引用的是controller中create方法;

(4)@Html.ActionLink("Edit", "Edit", new { id=item.ID })编辑页面;

(5)@using (Html.BeginForm()) {   @Html.ValidationSummary(true)}用于客户端验证,其Html.BeginForm()表示在本页显示

(6)<div class="editor-label">
@Html.LabelFor(model => model.Time)标签
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Time)编辑框
@Html.ValidationMessageFor(model => model.Time)验证合法性错误显示
</div> /***************************************************/
/****MVC使用jQuery从视图向控制器传递Model的方法*****/
/***************************************************/ //Entity
using System.ComponentModel.DataAnnotations;
namespace MvcApplication1.Models
{
public class Movie
{
public int Id { get; set; }
[Required(ErrorMessage = "必填")]
public string Title { get; set; }
}
} //Controller
using System.Web.Mvc;
using MvcApplication1.Models;
namespace MvcApplication1.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new Movie());
} public ActionResult AddMovie(Movie movie)
{
return Json(new {msg = "ok"});
} }
} //View
@model MvcApplication1.Models.Movie
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2> @using (Html.BeginForm("AddMovie", "Home", FormMethod.Post))
{
@Html.EditorFor(m => m.Title)
@Html.ValidationMessageFor(m => m.Title)
<br/>
<input type="button" id="addMovie" value="提交"/>
} @section scripts
{
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
<script type="text/javascript">
$(function() {
$('#addMovie').click(function(e) {
//e.preventDefault();
if ($('form').valid()) {
$.ajax({
url: $('form').attr('action'),
type: $('form').attr('method'),
data: $('form').serialize(),
success: function(data) {
if (data.msg == 'ok') {
alert('提交成功');
}
}
});
}
});
});
</script>
}
/*=====================================
View新增商品
=====================================*/
@using System.Web.Optimization
@model MultiPageSimpleTask.Entitys.Product @{
ViewBag.Title = "title";
Layout = null;
}
@Scripts.Render("~/Bundles/vendor/js/bottom")
<script type="text/javascript">
$(function() {
//新增商品
$("#addBtn")
.click(function() {
alert($('form').serialize());
$.ajax({
url: $('form').attr('action'),
type: $('form').attr('method'),
data: $('form').serialize(),
success: function(data) {
var result = data;
if (result.Status) {
alert("新增成功");
//top.window.location = '/Home/Index';
} else {
alert("新增失败\n" + result.Message);
}
}
});
});
});
</script> <h2>title</h2>
@using (Html.BeginForm("add", "home", FormMethod.Post))
{
@Html.DisplayNameFor(m => m.ProductName)
@Html.TextBoxFor(m => m.ProductName,new { style = "width:100px;",@class="class1" })
<br/>
@Html.DisplayNameFor(m => m.Discontinued)
@Html.RadioButtonFor(m => m.Discontinued, true, new {@checked = true})
@Html.RadioButtonFor(m => m.Discontinued, false)
<br/>
<br/>
<input type="button" id="addBtn" value="新增商品"/>
} /*=====================================
View修改商品
=====================================*/
@using System.Web.Optimization
@model MultiPageSimpleTask.Entitys.Product @{
ViewBag.Title = "title";
Layout = null;
}
@Scripts.Render("~/Bundles/vendor/js/bottom")
<script type="text/javascript">
$(function() {
//修改商品
$("#updateBtn")
.click(function () {
alert($('form').serialize());
$.ajax({
url: $('form').attr('action'),
type: $('form').attr('method'),
data: $('form').serialize(),
success: function(data) {
var result = data;
if (result.Status) {
alert("修改成功");
//top.window.location = '/Home/Index';
} else {
alert("修改失败\n" + result.Message);
}
}
});
});
}); </script> <h2>title</h2>
@using (Html.BeginForm("update", "home", FormMethod.Post))
{
@Html.DisplayNameFor(m => m.ProductName)
@Html.TextBoxFor(m => m.ProductName)
<br />
@Html.DisplayNameFor(m => m.Discontinued)
@Html.RadioButtonFor(m => m.Discontinued, true)
@Html.RadioButtonFor(m => m.Discontinued, false)
<br />
<br />
<input type="button" id="updateBtn" value="修改商品" />
} /*=====================================
Controller控制器
=====================================*/
#region 新增商品
[HttpGet]
public ActionResult Add()
{
Entitys.Product product = new Entitys.Product();
return View(product);
} [HttpPost]
public ActionResult Add(Entitys.Product model)
{
_result.Status = false;
//TODO:Convert to DTOs
if (!ModelState.IsValid)
{
_result.Message = ExpendErrors(this);
}
else
{
int i = _productAppService.InsertAndGetId(model); //新增
if (i > 0)
{
_result.Status = true;
}
}
return new JsonResult() { Data = _result };
}
#endregion #region 修改商品 [HttpGet]
public ActionResult Update(int id)
{
var model = _productAppService.Get(id);
return View(model);
} [HttpPost]
public ActionResult Update(Entitys.Product model)
{
_result.Status = false;
//TODO:Convert to DTOs
if (!ModelState.IsValid)
{
_result.Message = ExpendErrors(this);
}
else
{
var modelTarget = _productAppService.Get(model.Id); //赋值
modelTarget.ProductName = model.ProductName; //更新字段
modelTarget.Discontinued = model.Discontinued;
int i = _productAppService.InsertOrUpdateAndGetId(modelTarget); //新增
if (i > 0)
{
_result.Status = true;
}
}
return new JsonResult() { Data = _result };
} #region 返回消息类
/// <summary>
/// 返回信息类
/// </summary>
public class StatusMsg
{
/// <summary>
/// 返回状态 true false
/// </summary>
public bool Status;
/// <summary>
/// 返回信息
/// </summary>
public string Message;
/// <summary>
/// 返回扩展信息 如400、401状态码
/// </summary>
public string Ext;
}
#endregion #region 获取验证信息
public static string ExpendErrors(Controller controller)
{
System.Text.StringBuilder sbErrors = new System.Text.StringBuilder();
foreach (var item in controller.ModelState.Values)
{
if (item.Errors.Count > 0)
{
for (int i = item.Errors.Count - 1; i >= 0; i--)
{
sbErrors.AppendLine(item.Errors[i].ErrorMessage);
}
}
}
return sbErrors.ToString();
}
#endregion
}
#endregion /*=====================================
Entity实体类数据
=====================================*/
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Abp.Domain.Entities; namespace MultiPageSimpleTask.Entitys
{
[Table("Product")]
public class Product : Entity
{
/// <summary>
/// ProductName
/// </summary>
[Display(Name = "商品名称")]
[Required(ErrorMessage= "商品名称不能为空")]
public virtual string ProductName { get; set; } /// <summary>
/// SupplierID
/// </summary>
public virtual int? SupplierID { get; set; } /// <summary>
/// CategoryID
/// </summary>
public virtual int? CategoryID { get; set; } /// <summary>
/// QuantityPerUnit
/// </summary>
public virtual string QuantityPerUnit { get; set; } /// <summary>
/// UnitPrice
/// </summary>
public virtual decimal? UnitPrice { get; set; } /// <summary>
/// UnitsInStock
/// </summary>
public virtual Int16? UnitsInStock { get; set; } /// <summary>
/// UnitsOnOrder
/// </summary>
public virtual Int16? UnitsOnOrder { get; set; } /// <summary>
/// ReorderLevel
/// </summary>
public virtual Int16? ReorderLevel { get; set; } /// <summary>
/// Discontinued
/// </summary>
[Display(Name = "发布状态")]
[Required(ErrorMessage="发布状态不能为空")]
public virtual bool? Discontinued { get; set; } /* 示例
[StringLength(10, MinimumLength = 4, ErrorMessage = "{0}的长度必须大于{2}个字符并小于{1}个字符")]
[Display(Name = "密码")]
public virtual string LogPassword { get; set; } [Display(Name = "确认密码")]
[Compare("LogPassword", ErrorMessage = "密码必须一致")]
public virtual string LogPasswordConfirm { get; set; } [Display(Name = "姓名")]
public virtual string RealName { get; set; } [Required]
[Display(Name = "登录账号")]
public virtual string LogID { get; set; } [StringLength(10, MinimumLength = 4, ErrorMessage = "{0}的长度必须大于{2}个字符并小于{1}个字符")]
[Display(Name = "密码")]
public virtual string LogPassword { get; set; } [StringLength(10, ErrorMessage = "{0}的长度不能大于{1}个字符")]
[Display(Name = "姓名")]
public virtual string RealName { get; set; } [Display(Name = "出生日期")]
[Range(typeof(DateTime), "2011-12-31", "1950-1-1", ErrorMessage = "{0}的范围是{1}到{2}")]
public virtual DateTime Birthday { get; set; } [RegularExpression(@"\d{17}[\d|X]|\d{15}", ErrorMessage = "{0}的格式不正确")]
[Display(Name = "身份证号码")]
public virtual string IdentityNo { get; set; } [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}", ErrorMessage = "{0}的格式不正确")]
[Display(Name = "邮箱")]
public virtual string Email { get; set; }
*/
}
}

MVC使用jQuery从视图向控制器传递Model,数据验证,MVC HTML辅助方法小结的更多相关文章

  1. MVC使用jQuery从视图向控制器传递Model的2种方法

    http://blog.csdn.net/make1828/article/details/29846003 using System.ComponentModel.DataAnnotations; ...

  2. 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图与控制器传递数据

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  3. ASP.NET MVC 数据传递 视图向控制器传递

    视图向控制器传递 MVC 视图向控制器传递,就是获取用户输入的数据,在去进行操作 好了,我们不多说直接进行我们的案例. 在HomeController类中添加下来方法 [HttpPost] publi ...

  4. [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作

    [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型.视图.控制器.路由等的基本操作 1. 使用Visual Studio 2015创建Web App (1)文件>新建> ...

  5. .NET MVC model数据验证

    MVC提供了很方便的数据验证,只需要在model里加入相关的正则等,那么就会在前台里生成相关的验证脚本.需要引用两个js文件: jquery.validate.min.js jquery.valida ...

  6. OPEN(SAP) UI5 学习入门系列之三:MVC (下) - 视图与控制器

    继续来学习UI5的MVC模型吧,这次我们来探讨视图与控制器. 1 视图 在MVC中,视图用来定义和渲染UI.在UI5中,视图的类型是可以自定义的,除了以下预定义的四种视图类型之外,你也可以定制自己的视 ...

  7. MVC怎么在当前视图中,传递参数给到另外一个视图?

    在TransData.cshtml视图中: <div> <!--在一个视图中,请求另外一个视图,并且将数据传到另外一个视图--> <!--视图中调用无返回值的方法,需要加 ...

  8. MVC Model数据验证

    概述 上节我们学习了Model的数据在界面之间的传递,但是很多时候,我们在数据传递的时候为了确保数据的有效性,不得不给Model的相关属性做基本的数据验证. 本节我们就学习如何使用 System.Co ...

  9. MVC中利用ViewBag传递Json数据时的前端处理方法

    用viewBag传递Json字符串到前端时,json字符串中的“会被转义为& quot,前端处理方法为@Html.Raw(Json.Encode(ViewBag.Data)),再用eval() ...

随机推荐

  1. 201521123104 《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 1. List中指定元素的删除(题目4-1) 1.1 实验总结 这道题的关键是如何删除元素.一 ...

  2. 201521145048《Java程序设计》第4周学习总结

    1. 本章学习总结 学会了如何去设计一个类,尽量用private修饰属性,public修饰方法. 了解继承的目的. 了解继承和多态的关系. 了解关键字extends super final overr ...

  3. 201521123069 《Java程序设计》 第12周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2.书面作业 Q1.将Student对象(属性:int id, String name,int age,doub ...

  4. 201521123051《Java程序设计》第十周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出 ...

  5. 201521123092, 《java程序设计》第1周学习总结。

    #1.本周学习总结 这一周是我学习java的第一周,刚接触一门全新的编程语言,觉得还是有点困难的,很多基础性的java知识需要一点点学习,我会请教同学以及查询网上的学习资料,认真学好这一门学科. 本周 ...

  6. openfire:Openfire源代码在eclipse中的运行配置 + 与spark结合进行二次开发

    1.下载源代码:http://www.igniterealtime.org/downloads/source.jsp 2.把源代码解压出的openfire_src文件夹放至eclipse workpl ...

  7. 多线程面试题系列(2): CreateThread与_beginthreadex本质区别

    本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beg ...

  8. Java+大数据开发——HDFS详解

    1. HDFS 介绍  • 什么是HDFS 首先,它是一个文件系统,用于存储文件,通过统一的命名空间--目录树来定位文件. 其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角 ...

  9. dotnet core 2.0在ubuntu下安装失败

    在ubuntu下安装.net core2.0失败了,不知道是什么原因.按照微软官方的步骤.似乎走不通.偶然翻到debian的安装方法,发现debian系统居然是直接下载包安装的.没经过apt.尝试一把 ...

  10. 最近使用 .NET Core 遇到的一些坑

    最近.NET Core升级到2.0后开始慢慢捣鼓的多了起来,但遇到了不少坑,所以特来记录下. 第一个坑  条件编译符 我们在编写一些方法的时候通常会为Debug模式增加一些输出日志等以便我们检查,也会 ...