我希望DefaultModelBinder不要基于DataAnnotations元数据执行任何验证.我已经在我的网站的管理区域使用DataAnnotations和DynamicData,我需要一组不同的基于MVC的前端验证规则.
我正在使用MetadataType属性来装饰我的类.如果我可以为同一个模型使用不同的MetadataType类,但在不同的场景中使用它们会很棒.如果不是我只是通过设置一些属性或通过创建它的专用版本来禁用DefaultModelBinder上的验证.
鉴于这条路线:
routes.MapRoute("home", "{action}/{id}",
new { controller = "home", action = "index", id = UrlParameter.Optional });
Run Code Online (Sandbox Code Playgroud)
......这个动作:
public ActionResult Hi(string id) {
return Content("hello, id: " + id);
}
Run Code Online (Sandbox Code Playgroud)
问题#1 回复是什么:
GET http://localhost:2247/hi/7?id=55 HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
问题#2 回复是什么:
POST http://localhost:2247/hi/7?id=55 HTTP/1.1
Content-Length: 4
Content-Type: application/x-www-form-urlencoded
id=3
Run Code Online (Sandbox Code Playgroud)
[AttributeUsage(AttributeTargets.Parameter)]
public sealed class FromRouteAttribute : CustomModelBinderAttribute, IModelBinder {
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {
bindingContext.ValueProvider = new RouteDataValueProvider(controllerContext);
return ModelBinders.Binders.DefaultBinder.BindModel(controllerContext, bindingContext);
}
public override IModelBinder GetBinder() {
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
...你可以像这样使用:
public …Run Code Online (Sandbox Code Playgroud) 我很好奇可引用的引用类型是如何工作的,不是在你自己的代码库中,而是在已编译的库中.C#是否能够知道属性或参数是否可为空,或许可以检查一些编译器添加属性的存在性?
为什么ASP.NET MVC 2.0不是.NET 4.0 BCL的一部分?
哪种.NET语言error作为关键字?
我有一个名为的类Error,FxCop说这是一个保留的语言关键字.
我需要支持名为'send-request'的方法作为在XSLT转换中使用的扩展函数.这是由扩展对象提供的XslCompiledTransform.关于扩展对象的酷炫之处<msxsl:script>是,我不必使用<msxsl:script>,只需声明命名空间并调用函数即可.不好的是,函数名称必须与CIL方法名称完全匹配.
所以,我想知道,是否有一种.NET语言支持方法名称中的连字符?不需要CLS合规性,使用反射调用该方法.
或者,我可以使用一些修改程序集IL的技术来更改方法名称吗?
或者,有没有办法拦截反射GetMethod调用并欺骗调用者方法'send-request'存在,但返回'SendRequest'方法呢?
我正在开发一个类库,我需要提供一种设置配置参数的方法.我可以创建一个配置部分,或者我可以公开静态属性.我对静态属性的关注是安全性.是什么阻止恶意组件在运行时进行更改?例如,在ASP.NET MVC中,您使用静态属性配置路由.这样安全吗?恶意组件可以添加/删除路由吗?
"不受信任的组件"将如何运行?在ASP.NET中,您只需要PreApplicationStartMethodAttribute在应用程序启动时运行一些代码.
我找到了这段代码,我想了解为什么开发人员使用字符串构造函数和char数组而不仅仅是文字常量字符串:
static string atomLang = new String("lang".ToCharArray());
Run Code Online (Sandbox Code Playgroud) 我有一个包含ParentModel的View,其中包含2个Models.我只想验证其中一个或另一个的字段.不是都.我们说我有:
public ParentModel{
public BlueUser BlueUser {get; set;}
public GreenUser GreenUser {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
因此用户选择他是GreenUser或BlueUser.每种类型的用户都有不同的字段,并且根据用户选择的用户类型,我只想验证该特定类型用户的字段.怎么能实现这一目标?
编辑:两个表单/模型必须在同一个视图,可能与一些JQuery或部分?
请不要"他们解决2个不同的问题"答案,这是相同的HTTP请求和响应问题.仅仅因为你在MVC中有视图/模板并不意味着你必须使用它们.M_C足以提供XML和JSON.
请不要"这是微软说你应该做的"答案.如果我这么想,我不会问这个问题.
有没有办法阻止 DefaultAntiforgery 记录错误?我看到它需要一个 ILoggerFactory 作为参数,这是一个公共类型,但我不知道如何设置它,因为 DefaultAntiforgery 是内部的。