@ Ajax.ActionLink - 将文本区域的值传递给控制器​​,以及data-something属性

时间:2017-07-26 13:34:50

标签: ajax asp.net-mvc asp.net-mvc-5

这就是故事:

我正在制作评论系统,当用户想要添加评论时,他们需要将数据放入文本区域。我希望获取用户输入的值,并创建一个@Ajax链接,将其作为参数发送给控制器。

我正在使用ASP.NET MVC5,在我的View()中,我有以下内容:

<textarea class="textArea" rows="3"></textarea>
        <br />
        @Ajax.ActionLink("Send",
                         "AddComment",
                         new { parametar = 0 , Contents = GetText() },
                         new AjaxOptions
                         {
                            UpdateTargetId = "beforeThis",
                            InsertionMode = InsertionMode.InsertBefore,
                            HttpMethod = "GET"
                         },
                         new { @class = "postavi btn btn-primary" })

我尝试在下面插入以下内容:

<script type="text/javascript">
    function GetText() {
        return "hello there!";
    }
</script>

我错误地说:

当前上下文中不存在名称GetText (这是@ Ajax.ActionLink的参数)

似乎我无法集成javascript(它可以取我这个值和剃刀代码)我该如何解决这个问题? PS&GT;我一直在寻找这个,并且当我尝试使用MVC或更早版本的答案时,答案都没有用。

3 个答案:

答案 0 :(得分:0)

确保导入此命名空间:

using System.Web.Mvc.Ajax

答案 1 :(得分:0)

您可以向ajax链接添加事件处理程序以更新自定义路由值。

@Ajax.ActionLink("Click", "Send", new {id = "xxx"}, new AjaxOptions(){}, new { onclick = "addParameter(this)" })

function addParameter(e) {
        e.href = e.href.replace("xxx", "HelloWord");
    }

答案 2 :(得分:0)

您现在正在做的是您希望剃刀调用您的JavaScript代码,这是不可能的。这是因为Razor在将它们发送到客户端并且Razor不知道JavaScript代码之前会将视图呈现为HTML,它只知道C#。所有JavaScript代码都在浏览器上运行。

我建议你使用POST方法发送你的评论。 您可以使用此代码发送它们:

====