在我的ASP.NET 5 MVC 6应用程序中,我想用Ajax发布一些数据到我的控制器。我已经使用ASP.NET MVC
5做到了这一点,并且在空白的ASP.NET MVC
5项目中测试了完全相同的代码,并且可以正常工作,但是对于新版本,我做不到,我也不知道为什么。通过Ajax调用,我可以转到控制器,创建模型,但是字段为null(对于布尔值,则为false)。这是我的代码:
script.js:
var data = {
model: {
UserName: 'Test',
Password: 'Test',
RememberMe: true
}
};
$.ajax({
type: "POST",
url: "/Account/Login/",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
// Do something interesting here.
}
});
AccountController.cs:
[HttpPost]
public JsonResult Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
//var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
//if (result.Succeeded)
//{
// //return RedirectToLocal(returnUrl);
//}
ModelState.AddModelError("", "Identifiant ou mot de passe invalide");
return Json("error-model-wrong");
}
// If we got this far, something failed, redisplay form
return Json("error-mode-not-valid");
}
LoginViewModel.cs:
public class LoginViewModel
{
[Required]
[Display(Name = "UserName")]
[EmailAddress]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
有任何想法吗 ?谢谢
如果您使用的是json,则需要在MVC6上显式使用FromBody
public JsonResult Login([FromBody]LoginViewModel model)
编辑
我认为您正在混合不同的错误。我将尝试描述您应该如何提出请求:
内容类型 必须为 :application / json
您的请求正文 必须为 JSON格式(如JasonLind建议):
{
UserName: 'Test',
Password: 'Test',
RememberMe: true
};
这是检查请求(通过chrome调试器工具F12)或使用请求检查器(如fiddler)时应看到的内容。
如果看到形式为的某物,UserName=Test&Password=Test&RememberMe=true
则说明您做错了,那就是形式格式。
您不需要该model
变量。如果看到带有“包装器”的请求,则应将其删除。
问题内容: 我正在尝试将JSON数组发布到MVC控制器。但是,无论我尝试什么,都为0或null。 我有包含文本框的表。我需要所有这些文本框中的ID和值作为对象。 这是我的Javascript: 这是我的查看代码: 这是控制器即时通讯试图接收数据以: 我究竟做错了什么? 问题答案: 您的代码有很多问题。让我们从标记开始。您有一个表,该表的每一行中都包含隐藏字段。除了您已经对那些隐藏元素的属性进行了硬
在几个SO问题的帮助下,我已经了解了如何使用元组形式在同一个视图上使用两个模型。在我的文件顶部是: 对于Foo的东西,它使用jQuery如下: 而且效果很好。然而,对于我的第二个模型,它不是显示信息,而是一个提交表单。目前,我所拥有的是: 请注意,这主要是从其他视图复制粘贴,因为我是MVC新手,它可以很好地用于其他表单。对于我的FooController,我有以下内容: 从视图提交时,收到的foo
我遵循了http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/将对象列表发布到我的Spring Controller。很快,当列表大小达到256时,我遇到了IndexOutOfBoundsException。 我找到了一个答案,它说在WebDataBinder中设置setAuto就可以解决这个问题。所以在我的控制器中,我
我有一个复选框的集合,每个复选框代表一个“产品”的顶部。我想传递一个修改的产品对象,勾选的浇头存储为selectedToppings。 我已经尝试了下面的代码,但不起作用。问题是我正在传递一个空的“product”对象,并且只存储复选框值(作为“selectedToppings”)。如何将“product”对象与“selectedToppings”一起传递? html(片段): 控制器: 实体:
我有两个实体A和B,其中A拥有B类的属性“B ”( A和B之间一对一的关联) 我想做一个Rest调用来保存A实体的实例,并将b param作为url传递,该url在json中给出类似的东西: /b/2引用B储存库的findById rest资源。 当我执行A Repository的这个目标rest resource save()(通常是对url/restapi/A的POST请求)时,它工作得很好,
问题内容: 我的控制器: 我想通过AJAX将参数发布到控制器。传递并不是问题,但是我无法发布。 我的JavaScript代码: 我尝试了一个测试阵列,但没有成功。:(我也尝试设置,但也没有成功… 该贴到我的控制器总是空。 问题答案: 您可以定义一个视图模型: 然后调整您的控制器动作以将此视图模型作为参数: 最后调用它: