在我的表单中,我有一个文本框,如下所示
@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()在当前上下文中不存在
答案 0 :(得分:5)
您需要javascript / jquery来获取文本框的值,然后更新要重定向到的网址
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()
是客户端方法在那一点上不存在 - 即它在当前上下文中不存在