Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从javascript将数据发送回MVC控制器中的操作_C#_Jquery_Asp.net Mvc - Fatal编程技术网

C# 无法从javascript将数据发送回MVC控制器中的操作

C# 无法从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

我使用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 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')