【发布时间】:2013-07-09 20:54:48
【问题描述】:
在我的控制器中我得到了动作:
[HttpGet]
public ActionResult CreateAdmin(object routeValues = null)
{
//some code
return View();
}
还有http帖子:
[HttpPost]
public ActionResult CreateAdmin(
string email,
string nameF,
string nameL,
string nameM)
{
if (email == "" || nameF == "" || nameL == "" || nameM == "")
{
return RedirectToAction("CreateAdmin", new
{
error = true,
email = email,
nameF = nameF,
nameL = nameL,
nameM = nameM,
});
}
http get Action 中的变量 routeValues 始终为空。如何正确地将对象作为参数传递给[http get] Action?
【问题讨论】:
-
要获取的参数可以从 URL 以查询字符串的形式传递。您对 GET 的 routeValues 有什么期望?
-
正在编写一个包含该参数的小类而不是一个选项?类似于类 CreateAdminModel{string email;string nameF;...}
-
CreateAdmin?error=True&email=admin1234%40mail.ru&nameL=asf&nameM=adf 我希望 Asp MVC 从 url 收集参数到 routeValues 对象
-
我不认为这就是 asp.net MVC 所做的。您可以使用
Request.Querystring集合访问查询字符串参数。 -
您可能会因为 RedirectToAction 的 routeValues 参数而感到困惑。但它不是那样工作的。由于您传递的是匿名对象,因此您甚至无法在 HttpGet 操作中访问 routeValues 的属性。您可以做的一件事是在 HttpGet 操作方法中指定参数,例如
[HttpGet] public ActionResult CreateAdmin(bool? error, string email, string nameF, string nameL, string nameM),然后查询字符串值将映射到此变量。
标签: asp.net asp.net-mvc