//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. PHP初入--添加内容到框框里并删除

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  2. 如何将RDS的数据同步到本地自建数据库

    长期以来有很多的用户咨询如何将RDS的数据同步到本地的数据库环境中,本篇文章以在阿里云的ECS服务器为例来说明如何将RDS的数据同步到本地数据库中.RDS对外提供服务是一个DNS地址+端口3306,这 ...

  3. 个人作业-2 英语学习APP分析

    产品: 必应词典 PC版 第一部分:调研,评测 1.对于这款产品的第一感觉是界面做的有点生硬粗糙,而且界面有种很空的感觉,界面美化做的不是很好,第一印象不是很喜欢.不过一点,就是把单词的近义词反义词放 ...

  4. 201521123001《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 List中指定元素的删除(题目4-1) 1.1 实验总结 答: 在老师的详细 ...

  5. 学号:201521123116 《java程序设计》第一周学习总结

    #1. 本章学习总结了解了班级的纪律和期末成绩组成.本周重点学习了java语言的特点具有简单性和结构中立.明白了jdk是java开发人员使用的一种工具,以及编写一个java程序的所需步骤,懂得了jdk ...

  6. eclipse: eclipse导入工程出现大红叹号

    总结: 问题原因:工程中classpath中指向的包路径错误 解决办法:到BUILDPATH CONFIG````中,liberaies中 出现红色叉号的包为路径错误的包.到classpath中修改相 ...

  7. python 接口测试1 --如何创建和打印日志文件

    python自带的logging实在是不好用,推荐使用logbook 思路如下: 1.创建path.py文件,获取工程根路径 2.创建log.py文件,在工程根路径下创建日志文件(文件名称按日期命名) ...

  8. mongodb 面试题总结

    mongodb 面试题总结 1 nosql和关系型数据库的区别 2 nosql数据库有哪些 redis mongodb hbase 3 MySQL与mongodb本质之间最基本的差别是什么 差别在多方 ...

  9. jQuery中的常用内容总结(一)

    jQuery中的常用内容总结(一)   前言 不好意思(✿◠‿◠),由于回家看病以及处理一些其它事情耽搁了,不然这篇博客本该上上周或者上周写的:同时闲谈几句:在这里建议各位开发的童鞋,如果有疾病尽快治 ...

  10. Ubuntu Server 12.04安装图解教程

                                                                                                Ubuntu S ...