教ASP.NET MVC将无密钥查询值视为布尔标志

时间:2011-04-12 19:23:53

标签: asp.net-mvc-3

如果网址中的查询值没有密钥,例如:http://site.com?update 并且一个动作有一个名为update的bool参数。 如果URL中存在“更新”值,我希望该更新参数为已接收值true,否则为false

示例:

行动:public ActionResult MyAction(string name, bool update) {...}
网址:http://site.com/path?name=Bob&update
预期的行动呼吁:controller.MyAction("Bob", true);

如果网址为http://site.com/path?name=Bob(请注意没有更新) 那么期望的电话是controller.MyAction("Bob", false);

这不是什么大问题,我知道我可以获得Request.Query并找到key = null的值,但我希望通过框架完成它。

我从哪里开始?

我正在使用ASP.NET MVC 3

1 个答案:

答案 0 :(得分:1)

通过框架执行此操作可能需要您使用相应的值提供程序工厂实现自己的值提供程序,并将工厂添加到ValueProviderFactories。您可能会实现它类似于现有的QueryStringValueProviderFactory和QueryStringValueProvider,但随后添加您自己的GetValue实现,其中包含您希望返回true / false的其他逻辑,具体取决于是否为查询字符串键提供了值。以下是添加值提供程序的链接,并在框架中查看QueryStringValueProvider。

http://mgolchin.net/posts/19/dive-deep-into-mvc-ivalueprovider