C# 无法从javascript将数据发送回MVC控制器中的操作
我使用jquery将行加载到表中。每行包含一个IdC# 无法从javascript将数据发送回MVC控制器中的操作,c#,jquery,asp.net-mvc,C#,Jquery,Asp.net Mvc,我使用jquery将行加载到表中。每行包含一个Id row = '<tr><td><button type="button" class="edit-form btn btn-default" data-form-id="' + value[0].id + '"></button></td></tr>'; tbody.append(row); 在我的控制器中,我有一个名为Test的操作,它执行以下操作 public Act
row = '<tr><td><button type="button" class="edit-form btn btn-default" data-form-id="' + value[0].id + '"></button></td></tr>';
tbody.append(row);
在我的控制器中,我有一个名为Test的操作,它执行以下操作
public ActionResult Test(string formId)
{
ViewBag.Title = "Testing Page ";
ViewBag.Message = "Testing Page" + formId + "hi";
return View();
}
我想要的是操作接收这个formId并将其重定向到一个名为Test.cshtml的视图。我需要该视图中包含formId信息,这样我就可以在该页面上使用javascript调用ajax来检索表单信息。我会:
选项a)创建一个带有隐藏字段的表单元素,当用户单击按钮时填充它,然后将表单提交给您的操作
<form method="post" action="/yourController/yourAction" id="frmAction">
<input type="hidden" name="parameterYouExpectinYourAction" value="" id="hdnField" />
</form>
<script>
$(".btn").on("click", function() {
$("#hdnField").val($(this).data("form-id"));
$("#frmAction").submit();
});
</script>
$(“.btn”)。在(“单击”,函数(){
$(“#hdnField”).val($(this.data(“表单id”));
$(“#frmAction”).submit();
});
选项b)创建一个普通链接,而不是类似按钮的链接
'<a href="/controller/youraction?yourParam=' + value[0].id + '" >link</a>'
“”
不是最干净的方式,但可以帮助您找到其他方式(我希望如此)。我看到的最简单的方式就是在按钮上设置一个事件,并重定向到带有ID的URL
$('button').on('click', function () {
window.location = 'http://yourURL' + '/' + $(this).attr('data-form-id');
});
当然,只需根据您的需要修改它(Html.Action(…)
,$.post(…)
,…)
进入控制器后,您可以结合提交的ID使用return RedirectToAction(…)
将用户重定向到第二个视图
Used ajax to send data(id) to the action, but the action ended up returning the html of
the new view as the response instead of redirecting
上面这一行的意思是,您希望将数据发布到action,Action1将调用另一个action,它将使用返回的ID
那么如果是这样的话,为什么要使用Ajax呢
function myfunction()
{
var formId = $(evt.currentTarget).data("formId");
// window.location = "ActionNameHere?formId" + formId;
// foryour Case
window.location="Test?formId="+formId;
}
上面的代码会将您重定向到
public ActionResult Test(string formId)
{
ViewBag.Title = "Testing Page ";
ViewBag.Message = "Testing Page" + formId + "hi";
return View();
}
从这里你将有你的Id在它的新网页。。。
启动HTTP请求的最佳方法是使用
document.loacation.href.replace('URL')
你的帖子很模糊。你到底想完成什么?如果你能发布更多的代码(比如,你的代码隐藏)。那会有帮助的。目前我最好的猜测是,您正在呈现表中的一行,而jQuery尚未绑定到该按钮。请提供更多代码…因为您所尝试的很重要…就是这样做的。。我用一个完全不需要的ajax调用使它复杂化。因此,如果新页面中的javascript需要访问它,那么我将这个formId分配给一个隐藏的输入,然后在页面加载时使用javascript检查它的值就足够了吗?或者有更好的方法吗?实际上你可以做两件事。。。如果数据为此,则只能在页面中用作Viewbag。。。但是,如果您的数据很大,并且希望有礼貌地使用它,请使用强类型模型
public ActionResult Test(string formId)
{
ViewBag.Title = "Testing Page ";
ViewBag.Message = "Testing Page" + formId + "hi";
return View();
}
document.loacation.href.replace('URL')