如何将jQuery变量值传递给c#mvc?
我需要在后面的mvc代码中获取变量btn的值。
$('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。
答案 0 :(得分:1)
一个巧合的是,您使用“提取”一词来描述您要执行的操作。
jQuery在浏览器中作为前端框架运行。这意味着它在客户端计算机上运行。您的MVC-C#代码位于服务器上。因此,如果要在这两台计算机之间发送数据,则需要使用http协议。
使用http方法(发布或放置)使用ajax调用将变量值作为JSON推送到后端的REST api(路由)。 对于此选项,您可能想看看javascript的fetch function。
使用html form,将变量值存储在一个输入元素中。表单提交也将对后端执行一个http post(默认)请求,并将所有输入元素值用作post参数。
如果您对此答案投反对票,请提供反馈意见,我可以做得更好。那是我学习形式错误并改进的唯一方法。谢谢。
答案 1 :(得分:1)
您需要通过jQuery.ajax()
/ jQuery.get()
方法使用jQuery.post()
(或其缩写形式GET
/ POST
),并使用传递按钮ID的参数:
jQuery(在$(document).ready()内部)
$('button').click(function () {
var btn = $(this).attr('id');
var url = '@Url.Action("ActionName", "ControllerName")';
var data = { id: btn };
// if controller method marked as POST, you need to use '$.post()'
$.get(url, data, function (result) {
// do something
if (result.status == "success") {
window.location = '@Url.Action("AnotherAction", "AnotherController")';
}
});
});
控制器操作
[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);
}
如果要将从AJAX检索到的按钮ID传递到其他操作方法,则可以利用TempData
或Session
来完成。
答案 2 :(得分:0)
有很多方法可以完成您想要的工作,但是我会坚持使用您的代码示例。
因此,您需要做的是利用jquery中的.ajax调用将数据从视图发送到控制器。这里的更多信息:http://api.jquery.com/jquery.ajax/
使用代码,您可以将.ajax调用放入基于单击哪个按钮的操作的逻辑流程中。
nil
}
您将看到一个URL。在我的示例中,我选择MyApp作为我的控制器,选择MyAction作为我们向其中发布值的控制器的方法。 ajax调用发布了一个具有btnId属性的参数。如果需要传递更多数据,则jquery调用中的属性名称应与控制器内的action方法签名的参数相对应。
所以我的控制器看起来像
$("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
});
}
这是使用带有jquery的.ajax调用来处理从视图向控制器传递值的一种方法。
我首选的方式是使用Ajax.BeginForm的HTML帮助器。
https://www.aspsnippets.com/Articles/ASPNet-MVC-AjaxBeginForm-Tutorial-with-example.aspx