如何在ASP.NET MVC 4中通过按钮点击调用控制器

17

请帮我翻译一下,我正在制作MVC网站,我有一个搜索页面和另一个在首页上的搜索表单。我想在从首页点击搜索按钮时调用相同的搜索页面控制器。以下是我的首页上的按钮:

    <span class="input-group-btn">
      <button class="btn btn-info" type="button" id="addressSearch"   
          onclick="location.href='<%: @Url.Action("List", "Search") %>'">
     Search</button></span>

列表是我从搜索页面执行搜索的操作,Search是控制器名称。当我点击上面的按钮时,它以如下形式返回url:

http://localhost:52050/<%:%20/Search/List%20%>

显示坏请求。我怀疑这是来自我的路由,但我不确定如何实现这一点,请帮忙解决。以下是我的路由设置:

 routes.MapRoute(
                name: null,
                url: "Page{page}",
                defaults: new { Controller = "Search", action = "List" }
                );


            routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new
            {
                controller = "Home",
                action = "Index",
                id = UrlParameter.Optional
            }
            );

使用@Html.Actionlink()代替按钮进行导航。 - Frebin Francis
2个回答

34

您正在混用 razoraspx 语法,如果您的视图引擎是 razor,请按照以下步骤操作:

<button class="btn btn-info" type="button" id="addressSearch"   
          onclick="location.href='@Url.Action("List", "Search")'">

谢谢你,伙计。从没想过这会有所不同。非常感谢你。 - Nuru Salihu
好的,我会做到。现在我遇到了一个很棘手的问题,我的下拉菜单选中的值没有改变。:( - Nuru Salihu
ListSearch 分别是什么? - Kellen Stuart
@KolobCanyon操作名称和控制器名称,例如public class SearchControllerpublic ActionResult Search - Ehsan Sajjad
@EhsanSajjad 好的,参数是 @Url.Action("Action","Controller") - Kellen Stuart

10

试试这个:

@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)

你的代码中应该是这样的,

@Html.ActionLink("Search", "List", "Search", new{@class="btn btn-info", @id="addressSearch"})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接