【问题标题】:How does @Html.BeginForm() work? and search result in Microsoft ASP.Net MVC 5 tutorial?@Html.BeginForm() 是如何工作的?和 Microsoft ASP.Net MVC 5 教程中的搜索结果?
【发布时间】:2014-12-21 20:23:19
【问题描述】:

我正在研究 MVC 5 Asp.Net 并遵循 this 教程。我想知道当我单击过滤器按钮时,这到底是如何获取结果的?

在Movie/view/Index.cshtml中添加了这段代码

@using (Html.BeginForm())
{    
     <p> Title: @Html.TextBox("SearchString") <br />   
     <input type="submit" value="Filter" /></p> 
} 

现在据我所知,它会在屏幕上创建一个文本框和一个按钮。但是这个按钮是如何调用search(index)函数并在函数中传递textbox的值的,我无法得到这个。

【问题讨论】:

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


    【解决方案1】:

    这不是一个愚蠢的问题。 @html.BeginForm() 像这样工作。它有一些你可以添加到它的参数,比如ActionControllerFormTypehtmlAttributes。它的工作方式是,如果您将其留空,它将查找与您现在所在页面上的名称相同的发布操作,例如,如果您在登录页面上,它将查找登录发布操作。我总是写我希望它访问的action 和controller。

    @Html.BeginForm("AddUser", "Admin", FormMethod.Post, new { @class = "my_form"}) {
    
    }
    

    所以你的post action 应该接受表单包含的参数,可以是Model,即Product、ViewModel 或单个字符串参数。在您的搜索情况下,您的操作应该看起来像

    [HttpPost]
    public ActionResult Search(string SearchString) 
    {
       //do something here
    }
    

    这里请注意,要传递给方法的搜索字符串。 &lt;input&gt; 的名称必须与您的操作所采用的参数相同。所以我们的表格应该是这样的

    @using (Html.BeginForm("Search", "YOUR CONTROLLER", FormMethod.Post)){    
         <p> Title: @Html.TextBox("SearchString") <br />   
         <input type="submit" value="Filter" /></p> 
    } 
    

    希望这会带来清晰。

    【讨论】:

    • 我的表格与我在问题中所说的相同。加上我的 action(Index) 函数中的参数是“searchString”,而不是“SearchString”(这里 S 是大写字母)。如果大写和小写“S”没有任何区别,那么我接受你的回答。
    • 好吧,我通过更改表单代码中不同字母的大小写来确定答案。它仍然有效。谢谢并接受:)
    • 有没有一种方法可以简单地使用模型参数?例如,我有一个带有 UserName、UserEmail 的模型,并且想要一个只有一个参数的函数 - 模型。
    • @using 语句有什么不同?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多