【发布时间】:2010-12-23 05:26:26
【问题描述】:
我有一个用于搜索用户的简单表单
<p>Enter a user's id number to search:</p>
<% using (Html.BeginForm("Search", "UserAdmin", FormMethod.Get)) { %>
<%= Html.TextBox("id") %>
<input type="submit" value="Search" />
<% } %>
我希望此链接转到 useradmin/search/{id} 但链接呈现为 useradmin/search?id={id}
两个 url 都是有效的,并且按照我的预期映射到我的操作,我只是认为前者更整洁,并且希望使用这种样式。
更新:
根据 Michael Gattuso 的回答,我将此作为可行的解决方案。不优雅,但很有效。
<p>Enter a user's id number to search:</p>
<% using (Html.BeginForm("SearchPost", "UserAdmin")) { %>
<%= Html.TextBox("id") %>
<input type="submit" value="Search" />
<% } %>
public ActionResult Search(string id)
{
var result = _Service.SearchForUsers(id);
return View(result);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SearchPost(string id)
{
return RedirectToAction("Search", new { id = id });
}
【问题讨论】:
-
它到底有什么不优雅的地方?
-
您可以通过简单地使用 javascript 拦截表单帖子并将输入到文本框中的 id 附加到所需的 url 来避免重定向,即 [window.location='UserAdmin/Search/'+valFromTextbox]。如果 javascript 被禁用,它将恢复到当前的“丑陋”网址
标签: c# asp.net-mvc url routing