如何将输入字段值传递给路由对象?

时间:2010-10-22 07:13:43

标签: asp.net-mvc

我有一个输入框,其中输入的值将被POST到Action参数。 但我也希望价值反映在这个网址上:

www.my-site.com/search/myquery

关于如何实现这一点的任何想法?

以下是代码..

搜索表单



        <% using(Html.BeginForm("Index", "Search")) { %>

            <%: Html.TextBox("query", "Enter Keyword") %>

        <% } %>

Global Asax


routes.Add("Search", new Route(
                "Search/{query}",
                new { controller = "Search", action ="Index", query="" }
            ));


控制器



 public ActionResult Index(string query)
        {
return new EmptyResult()
    }


1 个答案:

答案 0 :(得分:2)

如果要将用户输入的值传递给查询字符串,则需要使用javascript。注册表单的submit事件并将其附加到网址。另一种可能性是使用GET动词而不是POST,它将自动将其附加到查询字符串(但在这种情况下,您应该使用不同的动作名称,因为您不能有两个具有相同名称和相同动词的动作)。

<% using (Html.BeginForm("Index", "Search", FormMethod.Get)) { %>
    <%: Html.TextBox("query", "Enter Keyword") %>
    <input type="submit" value="OK" />
<% } %>