Javascript 使用@Html.ActionLink-ASP.NET MVC 5发布文本区

Javascript 使用@Html.ActionLink-ASP.NET MVC 5发布文本区,javascript,jquery,asp.net-mvc-5,Javascript,Jquery,Asp.net Mvc 5,我知道这个问题被回答了很多次,但因为我对javascript不太了解,而且这是我的第一个网站,所以我在链接中遵循了答案。这是我目前的代码: <li>@Html.ActionLink("Save","SaveClass",new { path2=Model.path,code="xxx"},new { id="save"})</li> @Html.TextAreaFor(m=>m.

我知道这个问题被回答了很多次,但因为我对javascript不太了解,而且这是我的第一个网站,所以我在链接中遵循了答案。这是我目前的代码:

    <li>@Html.ActionLink("Save","SaveClass",new { path2=Model.path,code="xxx"},new { id="save"})</li>
@Html.TextAreaFor(m=>m.code, new { id = "code" })
<script>
       $("#save").click(function(evt) {
           var fakedUri = $("#save").attr("href");
           alert($('#code').val());
           var uri = $("#save").attr("href").replace("xxx", $("#code").val());
});
    </script>
代码始终将“xxx”保存到文件中,并抛出:

请求的内容似乎是脚本,不会由 静态文件处理程序


如何使其工作?

ActionLink
helper生成一个链接并单击该链接将发出get请求。看起来您正试图通过querystring将文本区域的值发送到下一个操作方法。但是GET可能不是处理这个问题的最佳解决方案。Querystring对它可以处理的数据量有限制(因浏览器而异)

理想情况下,如果您不喜欢按钮,但需要一个链接来启动表单提交,那么您应该进行表单提交,这可以通过一点javascript实现

@using(Html.BeginForm("SaveClass","YourControllerName"))
{
  @Html.TextAreaFor(m=>m.code)
  @Html.HiddenFor(s=>s.path)
  @Html.ActionLink("Save","SaveClass","YourControllerName",null,new { id="save"})

}
现在,在javascript中,当单击链接时,停止默认行为(默认的GET操作),然后提交所单击链接所在的表单。我们可以使用
closest()
方法

$(function(){

  $("#save").click(function(e){
    e.preventDefault();
    $(this).closest("form").submit();
  });

})
确保使用正确的参数名称(与输入名称匹配)


使用表单而不是ActionLink。这不是链接的目的。所谓表单,是指@Html.BeginForm()?我以前用过它,它工作得很好,但它使用按钮,而这里我需要链接。是的。如果有人愚蠢到需要这样做,你可以让一个按钮看起来像一个CSS链接。从技术上讲,你不需要这里的链接,一个按钮也可以做同样的工作——它们都是向服务器发出新请求的方式。谢谢!它现在可以工作了。它仍然抛出
请求的内容似乎是脚本,静态文件处理程序将不会为其提供
异常。但是它正确地存储了输入!您何时何地收到此消息?当我单击“保存”时,我收到此消息。但在重新加载页面后,我发现它正确地存储了值。在重定向到索引操作时(保存后,您正在重定向到索引)是否出现该错误。在这种情况下,索引页将出现问题。当您在浏览器中直接访问该操作时,您应该能够看到相同的消息。当我直接访问“索引”操作时,我看不到该消息,但是,是的,当我从“存储类”或任何其他视图重定向时,我似乎看到了该消息。
$(function(){

  $("#save").click(function(e){
    e.preventDefault();
    $(this).closest("form").submit();
  });

})
public ActionResult SaveClass(string path,string code)
{
   // to do  : return something
}