我在我的WebApi项目控制器中成功实现了FluentValidation,该控制器只有一个HttpGet方法.当我添加另一个HttpGet方法时,我将路由属性添加到两个方法中.即[Route("Method1")]和[Route("Method2")].
现在无论我是否输入任何数据,ModelState都会返回true.
这是我的代码.
WebApiConfig
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new ValidateModelStateFilter());
//FluentValidation
FluentValidationModelValidatorProvider.Configure(config);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{action}/{id}",
defaults: new { controller = "Menu", id = RouteParameter.Optional}
);
}
}
Run Code Online (Sandbox Code Playgroud)
ValidateModelStateFilter
public class ValidateModelStateFilter : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
}
}
}
Run Code Online (Sandbox Code Playgroud)
调节器
[HttpGet]
[Route("Method1")]
public IHttpActionResult ReadAllMenusByApplication([FromUri] ReadAllMenusByApplicationInput input)
{
var result = new List<ApplicationMenu>();
...
} …Run Code Online (Sandbox Code Playgroud) 我有一个角度应用程序,也使用jquery.dataTables.当我使用数据表建立一个动态表与ng-click表中的数据角指令,它不火的ng-click事件.
我怀疑我需要使用角度$compile服务,但我没有成功找到明确的文档或示例.
任何帮助将不胜感激.
更新:我已经在DataTables方法的createdRow选项中添加了一些代码.我好像现在正在开火,但是我收到了一个错误
0x800a01b6 - JavaScript运行时错误:对象不支持属性或方法'$ apply'
这是我的代码:
var app = angular.module('appy', []);
app.controller('myCtrl', [
function() {
var _this = this;
$('#report').DataTable({
data: [{
"LastName": "Doe",
"Link": "<button type=\"button\" ng-click=\"Ctrl.dataTablesAlert()\">Test Alert</a>"
}],
columns: [{
"title": "Last Name",
"data": "LastName"
}, {
"title": "Actions",
"data": "Link"
}],
createdRow: function(row, data, dataIndex) {
$compile(angular.element(row).contents())(_this);
}
});
this.buttonAlert = function() {
$('#buttondiv').addClass('success');
};
this.htmlAlert = function() {
$('#htmltablediv').addClass('success');
}; …Run Code Online (Sandbox Code Playgroud)