使用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 并将其保存为多对多

如何使用 AJAX 将数据从视图传递到控制器

在 codeigniter 中,如何将数组值从控制器传递到同一视图页面?

尝试使用 segue 将数据从一个视图控制器传递到另一个视图控制器

将数据从标签栏控制器传递到 swift 和 xcode 中的视图控制器