2

抱歉,我是 C# 和 ASP.NET 的新手,我看到很多关于这个问题的帖子,但我完全不明白。我试图了解如何通过 HTML.ActionLink 将 GET 参数传递给操作:

这是网址:

http://localhost:36896/Movies/SearchIndex?searchString=the

我的 CSHTML 页面应该是这样的:

<input type="Text" id="searchString" name="searchString" />
@Html.ActionLink("Search Existing", "SearchIndex", new { searchString = "the"}) 

这个硬编码参数“the”实际上是有效的,但是我如何选择 id=searchString 的输入元素,比如document.getElementById("searchString").value

谢谢,

4

2 回答 2

3

如果您要作为 GET 参数发送的值在服务器上未知,则您不能使用 Html.ActionLink 帮助器来添加它。您需要使用 javascript 来操作现有链接并附加参数。

看起来您有一个包含搜索字符串的输入字段,并且您希望将在此字段中输入的值发送到服务器。处理这种情况的更好方法是使用带有 method="GET" 的 HTML 表单而不是 ActionLink。这样您就不需要使用任何 javascript - 它是 HTML 规范的一部分:

@using (Html.BeginForm("SearchIndex", "Movies", FormMethod.Get))
{
    @Html.EditorFor(x => x.SearchString)
    <button type="submit">Search</button>
}

现在,当您单击Search按钮时,在字段中输入的值SearchString将自动发送到SearchIndex操作:

http://localhost:36896/Movies/SearchIndex?searchString=the

但是,如果您绝对坚持使用 ActionLink,则必须编写 javascript 来在单击此链接时操纵现有链接的 href 以便将值附加到 url。这是一种我不推荐的方法,因为 HTML 规范已经在整个 HTML 表单中为您提供了此功能。

于 2012-11-22T07:34:07.127 回答
0

这使得 @Html.EditorFor 引用对象的 Title 字段,有点随机但它有效!

@using (Html.BeginForm ("SearchIndex", "Movies", FormMethod.Get))
{
    @Html.EditorFor( x => x.ElementAt(0).Title)
    <button type="submit">Search</button>
}

仍然无法将输入参数传递给 GET 中的 URL。

编辑

最终解决方案

@Html.TextBox("SearchString")
    <button type="submit">Filter</button>

在控制器侧,切换输入参数。基本上它会自动识别传递的参数。

public ActionResult SearchIndex(string searchString)
        {
           ...
        }
于 2012-11-25T10:01:08.167 回答