需要允许操作方法字符串参数将标记绑定到它

时间:2011-01-16 17:12:44

标签: asp.net-mvc-3

我有一个action字符串作为唯一参数。 action方法对其进行转换,并将结果返回给客户端(这是在ajax调用中完成的)。我需要在字符串值中允许标记。在过去,我通过使用[AllowHtml]在我的模型上修饰属性来完成此操作,但该属性不能用于参数并且AllowHtmlAttribute类已被密封,因此我无法继承它。我目前有一个工作,我只使用一个属性创建了一个模型,并使用上述属性进行装饰,这是有效的。

我认为我不应该跳过那个箍。是否有我遗漏的东西,或者我应该向MVC团队发出请求以允许在方法参数上使用此属性?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

如果您需要允许特定参数(与“模型属性”相对)的html输入,则没有内置方法可以执行此操作,因为[AllowHtml]仅适用于模型。但您可以使用自定义模型绑定器轻松实现此目的:

public ActionResult AddBlogPost(int id, [ModelBinder(typeof(AllowHtmlBinder))] string html)
{
    //...
}

AllowHtmlBinder代码:

public class AllowHtmlBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var request = controllerContext.HttpContext.Request;
        var name = bindingContext.ModelName;
        return request.Unvalidated[name]; //magic happens here
    }
}

在我的博文中找到完整的源代码和说明:https://www.jitbit.com/alexblog/273-aspnet-mvc-allowing-html-for-particular-action-parameters/