asp.net mvc-如何在jQuery $ .ajax()中将模型发送请求到MVC控制器方法

在使用以下代码进行自动刷新时,我假设执行发布后,模型将自动发送给控制器:

$.ajax({

url: '',

type: "POST",

//data: ??????

success: function(result) {

$("div#updatePane").html(result);

},

complete: function() {

$('form').onsubmit({ preventDefault: function() { } });

}

});

每当发布时,我需要增加模型中的value属性:

public ActionResult Modelpage(MyModel model)

{

model.value = model.value + 1;

return PartialView("ModelPartialView", this.ViewData);

}

但是,当使用jQuery AJAX请求发布页面时,模型不会传递给控制器。 如何在AJAX请求中发送模型?

7个解决方案

49 votes

简单的答案(从MVC 3开始,甚至是2)是您不必执行任何特殊操作。

只要您的JSON参数与模型匹配,MVC就会足够聪明地根据您提供的参数构造一个新对象。 不存在的参数只是默认值。

例如,JavaScript:

var values =

{

"Name": "Chris",

"Color": "Green"

}

$.post("@Url.Action("Update")",values,function(data)

{

// do stuff;

});

该模型:

public class UserModel

{

public string Name { get;set; }

public string Color { get;set; }

public IEnumerable Contacts { get;set; }

}

控制器:

public ActionResult Update(UserModel model)

{

// do something with the model

return Json(new { success = true });

}

Chris S answered 2020-08-06T19:45:47Z

25 votes

如果需要将FULL模型发送到控制器,则首先需要该模型可用于javascript代码。

在我们的应用程序中,我们使用扩展方法执行此操作:

public static class JsonExtensions

{

public static string ToJson(this Object obj)

{

return new JavaScriptSerializer().Serialize(obj);

}

}

在视图上,我们使用它来呈现模型:

var model =

然后,您可以将模型变量传递到$ .ajax调用中。

Laviak answered 2020-08-06T19:46:20Z

4 votes

我有一个MVC页面,该页面提交来自一组单选按钮的选定值的JSON。

我用:

var dataArray = $.makeArray($("input[type=radio]").serializeArray());

使它们的名称和值组成数组。 然后我将其转换为JSON:

var json = $.toJSON(dataArray)

然后使用jQuery的ajax()将其发布到MVC控制器

$.ajax({

url: "/Rounding.aspx/Round/" + $("#OfferId").val(),

type: 'POST',

dataType: 'html',

data: json,

contentType: 'application/json; charset=utf-8',

beforeSend: doSubmitBeforeSend,

complete: doSubmitComplete,

success: doSubmitSuccess});

哪个作为本地JSON数据发送数据。

然后,您可以捕获响应流并将其反序列化为本机C#/ VB.net对象,并在控制器中对其进行操作。

为了以一种可爱的,低维护的方式使此过程自动化,我建议阅读此条目,该条目很好地说明了大多数本机,自动JSON反序列化。

匹配您的JSON对象以匹配您的模型,下面的链接过程应自动将数据反序列化到您的控制器中。 对我来说,它很棒。

关于MVC JSON反序列化的文章

dano answered 2020-08-06T19:47:16Z

3 votes

这可以通过构建一个javascript对象来匹配您的mvc模型来完成。 javascript属性的名称必须与mvc模型完全匹配,否则自动绑定将不会在帖子中发生。 一旦将模型放在服务器端,就可以对其进行操作并将数据存储到数据库中。

我可以通过在网格行上双击事件或在某种按钮上单击事件来实现这一点。

@model TestProject.Models.TestModel

function testButton_Click(){

var javaModel ={

ModelId: '@Model.TestId',

CreatedDate: '@Model.CreatedDate.ToShortDateString()',

TestDescription: '@Model.TestDescription',

//Here I am using a Kendo editor and I want to bind the text value to my javascript

//object. This may be different for you depending on what controls you use.

TestStatus: ($('#StatusTextBox'))[0].value,

TestType: '@Model.TestType'

}

//Now I did for some reason have some trouble passing the ENUM id of a Kendo ComboBox

//selected value. This puzzled me due to the conversion to Json object in the Ajax call.

//By parsing the Type to an int this worked.

javaModel.TestType = parseInt(javaModel.TestType);

$.ajax({

//This is where you want to post to.

url:'@Url.Action("TestModelUpdate","TestController")',

async:true,

type:"POST",

contentType: 'application/json',

dataType:"json",

data: JSON.stringify(javaModel)

});

}

//This is your controller action on the server, and it will autobind your values

//to the newTestModel on post.

[HttpPost]

public ActionResult TestModelUpdate(TestModel newTestModel)

{

TestModel.UpdateTestModel(newTestModel);

return //do some return action;

}

logan gilley answered 2020-08-06T19:47:41Z

2 votes

我认为您需要显式传递data属性。 一种方法是使用数据= $('#your-form-id')。serialize();

这篇文章可能会有所帮助。用jquery和ajax发布

在这里看看文档。Ajax序列化

rajesh pillai answered 2020-08-06T19:48:09Z

1 votes

您可以创建一个变量并将其发送到ajax。

var m = { "Value": @Model.Value }

$.ajax({

url: '',

type: "POST",

data: m,

success: function(result) {

$("div#updatePane").html(result);

},

complete: function() {

$('form').onsubmit({ preventDefault: function() { } });

}

});

必须在m中创建所有模型字段。

Majid Hosseini answered 2020-08-06T19:48:33Z

0 votes

在ajax电话中提到-

data:MakeModel(),

使用以下功能将数据绑定到模型

function MakeModel() {

var MyModel = {};

MyModel.value = $('#input element id').val() or your value;

return JSON.stringify(MyModel);

}

将[HttpPost]属性附加到您的控制器操作

在POST上,此数据将可用

Sarang Raotole answered 2020-08-06T19:49:06Z

mvc jquery ajax方法,asp.net mvc-如何在jQuery $ .ajax()中将模型发送请求到MVC控制器方法...相关推荐

  1. 【AJAX 笔记】AJAX 基本、HTTP 基本、原生 AJAX 的使用,jQuery / Axios / fetch 发送请求、跨域(JSONP/CORS)

    文章目录 1 Ajax 概述 1.1 AJAX 简介 1.2 XML 简介 1.3 AJAX 的特点 1.3.1 AJAX 的优点 1.3.2 AJAX 的缺点 1.4 AJAX 属性和方法 2. H ...

  2. 什么是Ajax?Ajax如何发送请求(详)

    本篇来讲关于Ajax的内容,当然还有小伙伴可能不知道该怎么读 "Ajax",它读 "阿贾克斯" ,当然了读法可能因人而异,下面来进入正题,先来了解一下什么是Aj ...

  3. 如何在Java 8中将Lambda表达式转换为方法引用?

    如果您使用Java 8进行编码,那么您会知道使用方法引用代替lambda表达式会使您的代码更具可读性,因此建议尽可能使用方法引用替换lambda表达式,但是,最大的问题是,您如何查找是否可以用方法引用 ...

  4. 炉石服务器请求超时何时才能修复,炉石传说登陆提示请求已超时怎么办_炉石传说登陆提示请求已超时解决方法_3DM网游...

    炉石传说登陆提示请求已超时怎么办?2月19日开始,一些玩家在登录炉石传说移动端的时候出现了登陆提示请求已超时的情况,无法进入游戏,不知道怎么解决,下面小编为大家带来了炉石传说登陆提示请求已超时解决方法 ...

  5. 水平集方法引入主动轮廓模型算法中的两种方法

    水平集方法引入主动轮廓模型算法中的两种方法 1.传统的基于主动轮廓模型和水平集理论的方法 2.变分水平集方法 在讲解水平集理论在主动轮廓模型中的应用前,我们先用流程图说明一下常见的处理主动轮廓模型的流 ...

  6. ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器

    一.校验 - 表单不是你想提想提就能提 1.1 DataAnnotations(数据注解) 位于 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据 ...

  7. 开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo项目分析

    开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo,这个是一个在网上流传比较多的Spri ...

  8. ajax调用fastreport,使用Ajax更新ASP.Net MVC项目中的报表对象

    Ajax技术显著加快了Web应用程序的速度.另外,视觉效果方面也有提升.大家都同意,每次点击按钮时整个页面都会被刷新这一点不太友好.如果你的网速不是很快,那么这个过程会很烦人,因为所有的元素都会先消失 ...

  9. 精化集ASP.NET AJAX与ASP.NET MVC分类第二轮筛选结果

    以下是包同学导给我的清单.老赵的第二轮把关很严,杀了几乎99%的文章.不过似乎有少部分并没有经过我的手,可能是其他同学转过来的吧.第三轮老赵依旧会严格把关,肯定也会杀更多(包括通过其他同学第二轮的)文 ...

最新文章

  1. c/c++左值和右值
  2. 12v60ah锂电池组装图_什么是自放电?如何缩短锂电池自放电测试时间?
  3. 高斯噪声,椒盐噪声的思想及多种噪声的实现
  4. 小程序,一个简单的图像处理
  5. BZOJ1007:[HNOI2008]水平可见直线(计算几何)
  6. 如何提升你的javascript代码逼格之简写篇
  7. 开源GIS(十一)——openlayers中加载离线标准与自定义切片(深度好文)
  8. vi/vim文本编辑器的使用
  9. OpenGeoSys模拟THMC复杂过程的软件工具
  10. C++11模板友元语法
  11. shiro介绍(一)
  12. sqlserver2000 详解
  13. 十三、Linux目录结构
  14. 王半仙儿的日记-0010——“在人生的十字路口,没有人会迷茫,但有人会胆怯。勤奋成就万事。”
  15. 【英语单词词汇笔记本】把英语常用常考的单词分100个类别:主要针对阅读、翻译、作文、词汇量
  16. 开发神技能 | Python Mock 的入门
  17. K60系列学习(一)
  18. 用Beautiful Soup进行屏幕抓取
  19. 代码中终止python程序
  20. 多语种翻译器,中英文互译翻译器

热门文章

  1. javascript 页码控件
  2. 观察:若干现有的RSS天气预报服务
  3. java成都行业2020_成都2020年9月份程序员工资统计
  4. 目标检测指标TP、FP、TN、FN和Precision、Recall
  5. 7年赚的2个亿,数学家6年就花光了,全砸在自家的房子上
  6. Spring Boot Vue Element入门实战(完结)
  7. 架构修炼之道 | 一个传统网关系统有几种 “死” 法
  8. 单片机炫彩灯实训报告_单片机跑马灯(流水灯)控制实验报告
  9. 2017年高教社杯全国大学生数学建模竞赛题目 B题 “拍照赚钱”的任务定价
  10. 2022年春节在家待几天?