使用jquery将数据从视图传递到控制器
Posted
技术标签:
【中文标题】使用jquery将数据从视图传递到控制器【英文标题】:Passing data from view to controller using jquery 【发布时间】:2021-06-14 00:50:05 【问题描述】:我正在尝试将用户输入从 html 传递到控制器,并且我正在使用 jquery 和 ajax。我已遵循本教程 https://www.c-sharpcorner.com/blogs/post-the-data-to-asp-net-mvc-controller-using-jquery-ajax。
这是控制器代码。
public class JQueryController
// GET api/<controller>
public ActionResult Index ()
return View();
[HttpPost]
public JsonResult AjaxPostCall(Userinfo userdata)
Userinfo userinfo = new Userinfo
Name = userdata.Name,
EmailAdress = userdata.EmailAdress,
Phone = userdata.Phone
;
return JSON(userinfo, JsonRequestBehavior.AllowGet);
这是cshtml文件中的代码
@
@Shakesphere.Controller.JQueryController.UserInfo;
@Model.Shakesphere.ViewModels.UserDataModel
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title></title>
<script type="text/javascript"
src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script>
(function CheckInput()
var userInfo = new Object();
userInfo.Name = $('name').val();
userInfo.EmailAddress = $('email').val();
userInfo.Phone = $('phone').val();
if (UserInfo != null)
$.ajax(
type: 'POST',
url: '/JqueryAjaxCall/AjaxPostCall',
data: JSON.stringify(UserInfo),
contenttype: "application.json; charset=utf-8",
datatype: "json",
success: function (response)
if (response != null)
alert("Name:" + response.Name);
else
alert("Something went wrong ")
,
failure: function (response)
alert(response.responseText);
,
error: function (response)
alert(response.responseText);
)
</script>
我得到的错误是视图和 json 在当前上下文中不存在。我也收到一个错误 错误 CS0117 'JQueryController' 不包含 'UserInfo' 的定义。
【问题讨论】:
您的控制器名称与 ajax 发布请求 url 不匹配。您必须使用url: '/Jquery/AjaxPostCall',
而不是使用 url: '/JqueryAjaxCall/AjaxPostCall',
并且它必须是 public class JQueryController: Controller
。
@Gökhan Aldanmaz 当我将类定义为公共类 JqueryController: Controller 时,我收到一条错误消息,指出控制器是一个命名空间,就像类型错误 CS0118 一样
你对命名空间做错了。也许有一个与命名空间名称相同的类名。你可以检查你的命名空间和类名。
我已经重命名了我的命名空间,并且 jquery 控制器类现在不能访问控制器类
【参考方案1】:
您的JQueryController
类需要从基类Controller
继承。将您的类声明更改为:
public class JQueryController : Controller
至于Userinfo
问题,我猜你在课堂上缺少using
声明。查看您的 Userinfo
课程,您会看到类似以下内容:
namespace Foo.Bar
您需要在 JQueryController
类的顶部添加类似于 using Foo.Bar
的内容。
【讨论】:
以上是关于使用jquery将数据从视图传递到控制器的主要内容,如果未能解决你的问题,请参考以下文章
如何通过ajax jquery将列表字符串从视图传递到控制器
将 jQuery 数据从 View 传递到 Controller 并将其保存为多对多
在 codeigniter 中,如何将数组值从控制器传递到同一视图页面?