我有一个网址:
/Account.aspx/Confirm/34a1418b-4ff3-4237-9c0b-9d0235909d76
和表格:
<% using (Html.BeginForm())
{ %>
<fieldset>
<p>
<label for="password" class="instructions">
Contraseña:</label>
<%= Html.Password("password") %>
<%= Html.ValidationMessage("password", "*") %>
</p>
<p>
<input type="submit" value="Validar" />
</p>
</fieldset>
<% } %>
在控制器的动作中:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Confirm(string id, string password)
{
//code
}
我想获取URL中的GUID值(确认后的部分)和输入密码的值。
我该怎么做?
修改
我已经注册了这条路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("Error.aspx/{*pathInfo}");
routes.IgnoreRoute("Admin/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}.aspx/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
routes.MapRoute("Root", "",
new { controller = "Home", action = "Index", id = "" });
}
我认为一切都很奇怪,但在确认操作的id参数中我得到一个空字符串。
答案 0 :(得分:1)
这不是因为您正在发布表单中没有ID的表单吗?
您可以在表单页面上设置模型作为传入的ID,然后为此ID分配隐藏的输入值...
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<string>" %>
public ActionResult Confirm(string id) { return View(id); }
现在,ViewData.Model将包含您的ID。把它放在你的表格里。
<input type="hidden" id="id" name="id" value="<%= ViewData.Model %>" />
然后,当您提交表单时,它将通过ID。
[AcceptVerbs(HttpVerbs.Post)] public ActionResult Confirm(string id, string password) { //...now you have access to ID and password }
答案 1 :(得分:0)
在Global.asax.cs中,为Confirm定义一个路由,指定URL的最后一部分是参数。
例如:
"Account/Confirm/{id}"
MVC框架将自动解析URL并在id参数
中返回GUID答案 2 :(得分:0)
您没有真正指出要回发的网址,只是表单中的网址,但请尝试以下操作:
var pathInfo = HttpContext.Request.PathInfo
这应该返回/Confirm/34a1418b-4ff3-4237-9c0b-9d0235909d76
,如果您有一个与此页面关联的Route,只需将GUID命名为RouteValue,您可能会更容易。如果你有一条路线发布,我很乐意提供帮助。