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

http://blog.csdn.net/make1828/article/details/29846003

using System.ComponentModel.DataAnnotations;

namespace MvcApplication1.Models
{
    public class Movie
    {
        public  int Id { get; set; }
        [Required(ErrorMessage = "必填")]
        public string Title { get; set; }
    }
}

HomeController中,一个Action用来显示强类型视图,一个用来接收从视图传递过来的Model。

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"});
        }

    }
}

方法一:通过jQuery的serialize()方法

@model MvcApplication1.Models.Movie

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

@using (Html.BeginForm("AddMovie", "Home", FormMethod.Post, new {id = "addForm"}))
{
    @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 ($(‘#addForm‘).valid()) {
                    $.ajax({
                        url: $(‘#addForm‘).attr(‘action‘),
                        type: $(‘#addForm‘).attr(‘method‘),
                        data: $(‘#addForm‘).serialize(),
                        success: function(data) {
                            if (data.msg == ‘ok‘) {
                                alert(‘提交成功‘);
                            }
                        }
                    });
                }
            });
        });
    </script>

}

方法二:通过jQuery的 JSON.stringify()方法把匿名对象转换成json

$(function() {
            $(‘#addMovie‘).click(function(e) {
                e.preventDefault();
                if ($(‘#addForm‘).valid()) {
                    addMovie();
                }
            });
        });

        function addMovie() {
            var movie = {
                "Title" : $(‘#Title‘).val()
            };

            $.ajax({
                url: ‘@Url.Action("AddMovie","Home")‘,
                data: JSON.stringify(movie),
                type: ‘POST‘,
                contentType: ‘application/json;charset=utf-8‘,
                success: function(data) {
                    if (data.msg == ‘ok‘) {
                        alert(‘提交成功‘);
                    }
                }
            });
        }

时间: 2024-10-11 17:09:53

MVC使用jQuery从视图向控制器传递Model的2种方法的相关文章

MVC学习系列9--从视图向控制器传递数据

前面学习了,从控制器向视图传递数据,现在学习怎么从视图向控制器传递数据. 通常,我们有两种方式,来处理浏览器的请求,一个是GET方式,一个是POST方式.一般来说,直接通过在浏览器中输入URL话,请求的方式是GET,那么GET方式的Action方法将会被调用,另一方面,如果是点击一个Button提交一个表单的话,这个时候POST方式的Action就会被调用. 这里我们说的是POST方式,怎么从视图向控制器传递数据,即把用户输入的表单信息的数据,传递到控制器对应的Action方法中. 这里先列举一

什么是ViewData的, ViewBag和TempData? - MVC为当前和后续请求之间传递数据的三种方法

原文出处:http://www.codeproject.com/Articles/476967/WhatplusisplusViewData-cplusViewBagplusandplusTem ASP.NET MVC提供3种选择ViewData,ViewBag,TempData来从controller到View及后续请求传输数据. ViewData和ViewBag很相似,而TempData有所不同. 让我们来讨论或总结三者的要点: ViewBag 和 ViewData的区别: ViewData

5.MVC框架开发(强类型开发,控制器向界面传递数据的几种方法)

界面表单中的表单元素名字和数据库表的字段名相一一映射(需要哪个表的数据就是那个表的模型(Model)) 在View页面中可以指定页面从属于哪个模型 注:以上的关系可以通过MVC的强类型视图开发来解决我们的开发代码的智能感知 1.强类型视图开发的步骤 1)在页面中指定强类型的类型(一定是引用类型),代码:例: @model List<MyMVCBookShop.Models.Book> 2)从控制器传强类型的数据到View视图里,那么就必须保证传入的数据一定和强类型视图中定义的类型相一致,例:

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

[.net 面向对象程序设计深入](6).NET MVC 6 —— 模型.视图.控制器.路由等的基本操作 1. 使用Visual Studio 2015创建Web App (1)文件>新建>项目,选择Web>ASP.NET Web 应用程序 (2)在新项目MyFirstWebApp对话框中,选择ASP.NET 5模板>Web Application 由于是RC版,这里的”添加单元测试“暂时不能选,上面的WebForms MVC WebAPI将合并,前面一节介绍过了,因此也不需要再选

JSP页面间传递参数的5种方法

JSP页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数.下面介绍一下实现的方法. (1)直接在URL请求后添加 如:< a href="thexuan.jsp?action=transparams&detail=directe">直接传递参数< /a> 特别的在使用response.sendRedirect做页面转向的时候,也可以用如下代码: response.sendRedirect("thexuan.jsp?acti

token的作用以及ajax中传递token的几种方法

目录 1.ajax中传递token的作用 2.ajax中传递token的几种方法 内容 1.ajax中传递token的作用 作用一:防止表单重复提交 主要原理是:用户提交表单后,会携带token到服务器,服务器将session中的token和用户请求带过来的token进行比较,如果相同,会将session中的token进行更新.若用户重复提交,则用户之后发过来的请求的token和服务器session中的token是不一致的,所以会导致之后的表单提交操作失败. 作用二:防止anti csrf 攻击

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

继续来学习UI5的MVC模型吧,这次我们来探讨视图与控制器. 1 视图 在MVC中,视图用来定义和渲染UI.在UI5中,视图的类型是可以自定义的,除了以下预定义的四种视图类型之外,你也可以定制自己的视图类型. 预定义的四种视图类型如下: XML view JSON view JS view HTML view 如果你想定义自己的视图类型,可以通过扩展 sap.ui.core.mvc.View 这个基类来实现. 1.1 视图的加载 视图可以通过异步(async)或者同步(sync)的方式加载,默认

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

在TransData.cshtml视图中: <div> <!--在一个视图中,请求另外一个视图,并且将数据传到另外一个视图--> <!--视图中调用无返回值的方法,需要加上大括号--> @{ViewBag.ViewTransData="我是视图TransData中定义的数据,将要被传递到LoadViewBySelf视图中";} @{Html.RenderPartial("LoadViewBySelf");} </div>

mfc 在VC的两个对话框类中传递参数的三种方法

弄了好久,今天终于把在VC中的对话框类之间传递参数的问题解决了,很开心,记录如下: 1. 我所建立的工程是一个基于MFC对话框的应用程序,一共有三个对话框,第一个对话框为主对话框,所对应的类为CTMDDDlg类.在主对话框上我放置了一个标签页(Tab Control)控件,其实现的功能是当单击标签提示A时进入页面A,即对话框A(所对应的类为CDialogChild1),单击B时进入对话框B(CDialogChild2). 整个工程的框架已经设计好了,在对话框A和对话框B上放置了许多控件,现在我想