【问题标题】:Map ASP.NET MVC action parameter name to another name将 ASP.NET MVC 操作参数名称映射到另一个名称
【发布时间】:2009-07-26 22:50:13
【问题描述】:

我可以将动作的参数映射到不同的名称吗?

我想使用保留字作为动作的参数,例如:

search?q=someQuery&in=location&for=x

所以“in”和“for”不能作为方法的参数名。 是否有内置功能,或者我应该创建一个模型绑定器?

谢谢。

【问题讨论】:

    标签: c# asp.net-mvc parameters action


    【解决方案1】:

    您可以使用“@”表示法使名称按字面意思解释,而不是 c# 中的保留字。

    public ActionResult Test(string @for)
    {
        var something = @for;
    }
    

    【讨论】:

    • 太棒了。谢谢!完全忘记了它(就像 html 属性中的 @class )。但是如何将“in”之类的查询项映射到名为“inLocation”的参数呢?我可能会创建 ActionParameterNameAttribute,其用法如下:[ActionParameterName("in")] inLocation。就像 [ActionName] 对操作所做的那样。
    • public ActionResult MyMethod([Bind(Prefix="in")] string inLocation) { ... }
    • @Arnis L. - 提案有什么问题? elad.ossadon 的评论所建议的重命名参数正是 [Bind(Prefix=...)] 旨在涵盖的场景之一。
    • 非常感谢,这真的很有用。我这样使用它取得了巨大的成功:[Bind(Prefix="Product.Brand")]int brandId
    猜你喜欢
    • 1970-01-01
    • 2012-03-15
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多