【问题标题】:pass value of a textbox from view to controller using actionlink使用 actionlink 将文本框的值从视图传递到控制器
【发布时间】:2015-10-13 09:46:34
【问题描述】:

在我的表单中,我有一个如下的文本框

@Html.TextBox("first_name")

我需要通过 actionlink 将此文本框的值传递给控制器​​。

我试过下面的

@Html.ActionLink("View", "view_Details", new { name = first_name})

但这会报错

“first_name”在当前上下文中不存在

这可以使用 Actionlink 吗?

我的控制器签名是

public ActionResult view_Details(string name)
     {
            return View();
     }

已编辑

 @Html.ActionLink("View", "view_Details", new { name = getname()})

 <script type="text/javascript">
      function getname() {
           return $("#first_name").val();
       }
</script>

我试过上面的代码。它也给出错误

getname() 在当前上下文中不存在

【问题讨论】:

  • 您将需要 javascript/jquery 来获取文本框的值,然后更新 url
  • @stephenmuecke 尝试与问题中已编辑的部分相同
  • 这是因为 Razor 代码在发送到视图之前在服务器上进行了解析。 getname() 是当时不存在的客户端方法。我将很快发布一个答案,说明您如何做到这一点。

标签: asp.net-mvc asp.net-mvc-4


【解决方案1】:

你需要 javascript/jquery 来获取文本框的值,然后更新你想要重定向到的 url

HTML

@Html.ActionLink("View", "view_Details", new { id = "myLink" }) // add id attribute

脚本

$('#myLink').click(function() {
  var firstname = $('#first_name').val(); // get the textbox value
  var url = $(this).attr('href') + '?name=' + firstname; // build new url
  location.href = url; // redirect
  return false; // cancel default redirect
});

旁注:进一步编辑,您收到该错误的原因是剃须刀代码(@Html.ActionLink() 在发送到视图之前在服务器上解析,但getname() 是不存在的客户端方法那时 - 即它在当前上下文中不存在

【讨论】:

  • 如果我还需要传递一些模型值,我将如何创建 url?
  • 你的意思是说模型的ID属性? - 在这种情况下,您可以添加var id = '@Model.ID';,然后添加var url = $(this).attr('href') + '?name=' + firstname + '&amp;id=' + id;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 2015-04-01
相关资源
最近更新 更多