我是 MVC 新手,正在设计一个简单的零件搜索工具。我希望 URL 使用控制器/操作/id 格式的搜索词进行更新,例如:
http://localhost/Materials/Search/PartA
但是,它会像这样更新:
http://localhost/Materials/Search?id=PartA
当我输入所需的 URL 时,它可以工作。但是,从同一窗口搜索新零件会导致问题:
http://localhost/Materials/Search/PartA?id=PartB
我究竟做错了什么?我考虑过使用 javascript 进行重定向,但随后我还必须检查 URL 字符串以查看 ID 是否已嵌入在 URL 中。我相信其他人已经处理过这个问题,所以只是想知道最好的做法是什么。
控制器:
Namespace MyApp.Controllers
Public Class MaterialsController
Inherits System.Web.Mvc.Controller
'
' GET: /Materials
Function Index() As ActionResult
Return View()
End Function
Function Search(Optional ByVal id As String = "") As ActionResult
If String.IsNullOrWhiteSpace(id) Then
id = "Enter a part number to search."
Else
id = "Part search for " + id + "."
End If
Return View("~/Views/Materials/Search.vbhtml", Nothing, id)
End Function
End Class
End Namespace
看法:
@ModelType string
@Code
ViewData("Title") = "Search"
End Code
<h2>Search</h2>
@Code
Using (Html.BeginForm("Search", "Materials", FormMethod.Get))
@<p>@Html.TextBox("id", Nothing, New With {.maxlength = 20, .style = "width:200px"})
<input type="submit" value="Search" />
</p>
End Using
End Code
<h3>@Model</h3>