3

我在路由表中有这个条目:

routes.MapRoute(null,
                "instructions/new",
                 new { controller = "Instructions", action = "NewInstructions" },
                 new { httpMethod = new HttpMethodConstraint("GET") }
               );

这种方法

 [HttpGet]
 public ActionResult NewInstructions(Client client)
 {
     var instructions = instructionService.Create(client);
     return RedirectToAction("Instructions", new { id = instructions.Id });
 }

和这个方法的链接

<a href="/instructions/new">create a new one</a>

在这种情况下,client调用操作方法时参数不为空。相反,它显然是通过调用Client的无参数构造函数来创建的。

但是,当我通过 POST 访问相同的操作方法时,该client参数被正确设置为null.

DefaultModelBinder如果请求未提供参数值以区分 GET 和 POST 并且每个参数的行为不同,这是一种标准行为吗?

4

1 回答 1

0

您的网站如何转移到“NewInstructions”操作?如果您来自 action return View("NewInstructions") 那么它可能带有上一篇文章的参数值。

但是,如果您使用 return RedirectToAction(...) 那么参数应该是设置的,如果是可选的,则为 null。

于 2012-06-15T04:36:33.340 回答