在剃须刀中向表单添加参数

我认为此表格会导致我在控制器中执行某些操作。问题是我不知道如何将参数传递给action方法。


<form class="full-search" asp-controller="Movies" asp-action="Search">

    <input type="search" name="searchmovie" placeholder="Search..." class="search-form">

    <select name="option" form="">

        <option name="option" value="category1">category 1</option>

        <option name="option" value="category2">category 2</option>

        <option name="option" value="category3">category 3</option>

    </select>

    <i class="fas fa-caret-down"></i>

    <input type="submit" name="" class="submit-full-search">

    <div class="search-btn-submit">

        <img src="~/img/search.svg">

    </div>

</form>

这是我的控制器:


[HttpGet("searchmoview/{option?}/{searchmovie}")]

public  IActionResult Search(string option, string searchmovie)

{

    //perform some search based on the filters

    return View("Search", data);

}

但是当我运行我的代码时,当我单击搜索时,URL看起来像这样:


https://localhost:33590/Information/Search

而不是像这样:


https://localhost:44320/seachmovie/category1/{searchString}

关于如何传递参数的任何想法吗?


胡说叔叔
浏览 149回答 2
2回答

慕尼黑5688855

你不能&nbsp;事情不是这样的。默认情况下,表单将发送POST请求,在这种情况下,表单中的输入将作为请求正文的一部分(即不是URL)发送。您可以将方法设置为GET,但是输入值将作为查询字符串的一部分(即?foo=bar)发送,而不是您要查找的路径的一部分发送。远程实现所需目标的唯一方法是使用JavaScript根据类别选择框的更改来操纵表单的动作。您将绑定到该change元素的事件,然后action以某种方式更改表单元素的属性。
打开App,查看更多内容
随时随地看视频慕课网APP