如何将jQuery变量值传递给c#mvc?
如何将jQuery变量值传递给c#mvc 我需要在mvc代码中获取变量btn的值如何将jQuery变量值传递给c#mvc?,c#,jquery,asp.net-mvc,C#,Jquery,Asp.net Mvc,如何将jQuery变量值传递给c#mvc 我需要在mvc代码中获取变量btn的值 $('button').click(function () { var btn = $(this).attr('id'); alert(btn); $.ajax({ type: 'GET', url: '@Url.Action("ActionName", "ControllerName")',
$('button').click(function () {
var btn = $(this).attr('id');
alert(btn);
$.ajax({
type: 'GET',
url: '@Url.Action("ActionName", "ControllerName")',
data: { id: btn },
success: function (result) {
// do something
}
});
});
根据变量值(提交按钮(或)预览按钮),我的模型将在某些字段上进行必要的验证
在我的控制器中,我以
[HttpGet]
public ActionResult ActionName(string id)
{
var vm = id;
return View(vm);
}
不过,不会调用控制器中的ActionResult
Jquery:alert(btn);--我在打电话。我可以看到带有id的警报窗口。但是,我无法在控制器中检索id。您使用“获取”一词来描述您要执行的操作,这是一个很好的巧合 jQuery作为前端框架在浏览器中运行。这意味着它在客户端的计算机上运行。您的MVC-C代码位于服务器上。因此,如果要在这两台计算机之间发送数据,则需要使用http协议 1.Ajax和REST: 使用使用http方法(post或put)的ajax调用将变量值作为JSON推送到后端的RESTAPI(路由)。 对于此选项,您可能需要查看javascript的功能 2.HTML表单 使用将变量值存储在一个输入元素中的。表单提交也会向后端执行http post(默认)请求,并使用所有输入元素值作为post参数
如果你否决了这个答案,请你提供反馈,我可以做得更好。这是我从错误中学习和提高的唯一途径。谢谢。您使用“获取”这个词来描述您想要做的事情,这是一个很好的巧合 jQuery作为前端框架在浏览器中运行。这意味着它在客户端的计算机上运行。您的MVC-C代码位于服务器上。因此,如果要在这两台计算机之间发送数据,则需要使用http协议 1.Ajax和REST: 使用使用http方法(post或put)的ajax调用将变量值作为JSON推送到后端的RESTAPI(路由)。 对于此选项,您可能需要查看javascript的功能 2.HTML表单 使用将变量值存储在一个输入元素中的。表单提交也会向后端执行http post(默认)请求,并使用所有输入元素值作为post参数
如果你否决了这个答案,请你提供反馈,我可以做得更好。这是我从错误中学习和提高的唯一途径。谢谢。您需要使用
jQuery.ajax()
(或其缩写形式jQuery.get()
/jQuery.post()
)和get
/post
方法,并使用参数设置控制器操作以传递按钮ID:
jQuery(在$(document.ready()内)
控制器动作
[HttpGet]
public ActionResult ActionName(string id)
{
// do something
return Json(new { status = "success", buttonID = id }, JsonRequestBehavior.AllowGet);
}
[HttpGet]
public ActionResult AnotherAction()
{
// do something
return View(model);
}
如果要将检索到的按钮ID从AJAX传递到其他操作方法,可以利用
TempData
或Session
来完成此操作。您需要使用jQuery.AJAX()
(或其缩写形式jQuery.get()
/jQuery.post()
)使用GET
/POST
方法,并使用传递按钮ID的参数设置控制器操作:
jQuery(在$(document.ready()内)
控制器动作
[HttpGet]
public ActionResult ActionName(string id)
{
// do something
return Json(new { status = "success", buttonID = id }, JsonRequestBehavior.AllowGet);
}
[HttpGet]
public ActionResult AnotherAction()
{
// do something
return View(model);
}
如果您想将检索到的按钮ID从AJAX传递到其他操作方法中,您可以利用
TempData
或Session
来实现这一点。有很多方法可以完成您想要做的事情,但我将坚持使用您的代码示例
因此,您需要做的是利用jquery中的.ajax调用将数据从视图发送到控制器。更多信息请参见:
使用您的代码,您可以将.ajax调用放在基于单击哪个按钮的操作逻辑流中
$("button").click(function ()
{
var btn = this.id;
if (btn == "previewButton")
{
$.ajax({
url: "/MyApp/MyAction",
type: "POST",
data: { btnId: btn },
dataType: "json",
async: true,
cache: false
}).success(function(data){
// do something here to validate if your handling worked
}).error(function(){
// Do something here if it doesnt work
});
}
}
您将看到有一个URL。在我的示例中,我选择MyApp作为我的控制器,选择MyAction作为我们向其发布值的控制器的方法。ajax调用使用btnId属性发布1个参数。如果需要传递更多数据,jquery调用中的属性名称应该与控制器中的actions方法签名的参数相对应
所以我的控制器看起来像
public MyAppController : Controller
{
[HttpPost]
public JsonResult MyAction(string btnId)
{
Debug.WriteLine("btnId: {0}", btnId);
return Json(new{ ButtonId= btnId });
}
}
这将是使用jquery的.ajax调用处理从视图向控制器传递值的一种方法
我更喜欢的方法是使用Ajax.BeginForm的Html助手,这可能是您的另一个选择
有很多方法可以完成您想要做的事情,但我将坚持使用您的代码示例 因此,您需要做的是利用jquery中的.ajax调用将数据从视图发送到控制器。更多信息请参见: 使用您的代码,您可以将.ajax调用放在基于单击哪个按钮的操作逻辑流中
$("button").click(function ()
{
var btn = this.id;
if (btn == "previewButton")
{
$.ajax({
url: "/MyApp/MyAction",
type: "POST",
data: { btnId: btn },
dataType: "json",
async: true,
cache: false
}).success(function(data){
// do something here to validate if your handling worked
}).error(function(){
// Do something here if it doesnt work
});
}
}
您将看到有一个URL。在我的示例中,我选择MyApp作为我的控制器,选择MyAction作为我们向其发布值的控制器的方法。ajax调用使用btnId属性发布1个参数。如果需要传递更多数据,jquery调用中的属性名称应该与控制器中的actions方法签名的参数相对应
所以我的控制器看起来像
public MyAppController : Controller
{
[HttpPost]
public JsonResult MyAction(string btnId)
{
Debug.WriteLine("btnId: {0}", btnId);
return Json(new{ ButtonId= btnId });
}
}
这将是使用jquery的.ajax调用处理从视图向控制器传递值的一种方法
我更喜欢的方法是使用Ajax.BeginForm的Html助手,这可能是您的另一个选择
你说的“代码隐藏”是什么意思?MVC中没有类似WPF的代码。C#部件在服务器上运行,JS部件在浏览器中运行。他们根本没有联系。从JS部件(前端)向C#部件(后端)传递数据的唯一方法是请求(例如AJAX)。您是否检查了浏览器结果中的url是否正确?您的sintaxys呼叫似乎正常,可能是Url。操作没有创建正确的rute?检查一下。如果没有,请检查服务器api的ruteconfig,