我使用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);
单击按钮,我需要将此Id发送回控制器中的操作,然后该操作将重定向到具有此Id的新视图。在新页面上,我将在javascript函数中使用此Id,然后使用jQuery ajax加载与此id相关的详细信息。 我无法实现这一点。我尝试了几件事
我已经完成了与此相关的其他几个Stackoverflow问题,并尝试了所有这些问题。似乎没什么用。请建议我应该如何解决这个问题。任何建议,将不胜感激。我已将数据发送到控制器中的其他操作,但现在我的问题是,我需要此ID转到操作,它应该将我重定向到该页面上显示此信息的新页面
我已经粘贴了以下代码以了解我尝试过的事情。
$.each(this.data, function (key, value) {
var row = '<button type="button" class="edit-form btn btn-default" data-form-id="' + value[0].id + '"><span class="glyphicon glyphicon-eye-open"></span></button></td></tr>';
tbody.append(row);
});
点击此按钮,我在我的javascript中调用以下代码
openEditForm: function (evt) {
var formId = $(evt.currentTarget).data("formId");
$.ajax({
url: '/Home/Test',
type: "POST",
dataType: "json",
data: JSON.stringify({ formId: formId }),
contentType: "application/json; charset=utf-8;",
success: function (response) {
},
error: function (xhr, ajaxOptions, thrownError) {
}
});
}
在我的控制器中,我有一个名为Test的动作,它执行以下操作
public ActionResult Test(string formId)
{
ViewBag.Title = "Testing Page ";
ViewBag.Message = "Testing Page" + formId + "hi";
return View();
}
我想要的是该操作接收此formId并将其重定向到名为Test.cshtml的视图。我需要该视图在其中包含formId信息,以便我可以在该页面上使用javascript来进行ajax调用以检索表单信息。
答案 0 :(得分:0)
我愿意:
选项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>
选项b)创建普通链接而不是像
这样的按钮'<a href="/controller/youraction?yourParam=' + value[0].id + '" >link</a>'
这不是最干净的方式,但可以帮助你弄清楚如何以其他方式完成它(我希望)。
答案 1 :(得分:0)
我看到的最简单的方法就是按钮上的一个事件,并重定向到带有ID的网址。
$('button').on('click', function () {
window.location = 'http://yourURL' + '/' + $(this).attr('data-form-id');
});
只需根据您的需要(Html.Action(...)
,$.post(...)
,...)进行修改。
进入您的控制器后,您可以将return RedirectToAction(...)
与提交的ID结合使用,将用户重定向到您的第二个视图。
答案 2 :(得分:0)
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
By Above Line你的意思是说你希望将数据发布到行动,而Action1将调用另一个Action,它将使用该返回的ID ......
因此,如果这是The Case,那你为什么要使用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')