【问题标题】:Passing data from view to controller using jquery使用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 控制器类现在不能访问控制器类

标签: c# jquery model-view-controller


【解决方案1】:

您的JQueryController 类需要从基类Controller 继承。将您的类声明更改为:

public class JQueryController : Controller

至于Userinfo 问题,我猜你在课堂上缺少using 声明。查看您的 Userinfo 课程,您会看到类似以下内容:

namespace Foo.Bar

您需要在 JQueryController 类的顶部添加类似于 using Foo.Bar 的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2020-06-08
    • 2016-07-08
    • 2015-04-08
    相关资源
    最近更新 更多