【发布时间】: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