ano*_*ous 3 asp.net-mvc routing url-routing
我有一个网址:
发货/搜索/ {检索类别}/{} searchValue
和控制器动作:
// ShipmentSearchType is an enum ... PartNumber, CustomerOrder, etc...
ActionResult Search(ShipmentSearchType searchType, string searchValue)
Run Code Online (Sandbox Code Playgroud)
所以这意味着我可以输入漂亮的网址,例如:
发货/搜索/ PARTNUMBER /控件-01
并获得具有该部件号的所有货件清单.
现在我正在忙着完成应用程序的工作,并且到了我正在编写一个要求部件号的搜索表单的位置,它将回发到搜索.基本上我想要:
装运/搜索/部分号码/ {用户输入从 - 文本框}
不幸的是我不能有一个表单到达上面的URL - 它必须生成服务器端.因此,我将表单发回到Shipment/Search/PartNumber,其中{user-input}作为发布请求值.
所以我最终得到:
[AcceptVerbs(HttpVerbs.Post)]
ActionResult Search(ShipmentSearchType searchType, string searchValue, bool? post)
{
return RedirectToAction("Search", new { searchType = searchType, searchValue = searchValue});
}
Run Code Online (Sandbox Code Playgroud)
2件事:
1)有没有办法在不使用客户端的javascript的情况下使用搜索的post方法?
2)布尔?邮政价值只是因此他们有不同的签名.这显然是丑陋的.有更聪明的方法吗?
谢谢!
编辑:
"不幸的是,我认为我不能从表格中做到这一点(至少没有javascript)." &"有没有办法可以在不使用javascript的情况下获得帖子?"
这有点模棱两可.我的意思是我不认为我可以有一个表单生成url/Shipment/Search/PartNumber/{value-from-textbox}并将其赋予表单方法get.我认为这在javascript中很简单(覆盖提交动作以动态构建url)但我还没有这样做.我并不是说javascript是必要的.
我有相同的情况,但它没有javascript工作正常,我只是在[post]搜索中接收FormCollections,然后重定向到这样的行动:
[AcceptVerbs(HttpVerbs.Post)]
ActionResult Search(FormCollection form)
{ return RedirectToAction("Search", new { searchType = form["searchType"], searchValue = form["searchValue"]}); }
Run Code Online (Sandbox Code Playgroud)
我认为这是一个很好的解决方案,因为我观看了关于Post-Redirect-Get模式的视频 - 这是asp.net mvc应用程序中的优秀实践.
| 归档时间: |
|
| 查看次数: |
627 次 |
| 最近记录: |