ASP.NETEF是否有类似Laravel中的路由模型绑定?
创始人
2024-09-18 20:31:24
0次

在ASP.NET中,可以使用路由模型绑定来直接将URL段绑定到指定的模型上,从而简化控制器的代码。下面是利用ASP.NET EF实现路由模型绑定的示例代码:

  1. 首先需要在Startup.cs文件中启用路由模型绑定:

services.AddMvc(options => { options.ModelBinderProviders.Insert(0, new RouteDataModelBinderProvider()); });

  1. 创建一个实现IModelBinder接口的自定义模型绑定器:

public class RouteDataModelBinder : IModelBinder { public async Task BindModelAsync(ModelBindingContext bindingContext) { // 从路由数据中获取模型的ID值 var valueProviderResult = bindingContext.ValueProvider.GetValue("id"); if (valueProviderResult == ValueProviderResult.None) { // 如果未找到ID值,则返回失败 bindingContext.Result = ModelBindingResult.Failed(); return; }

    // 将ID值转换为对应的模型对象
    var id = valueProviderResult.FirstValue;
    var dbContext = bindingContext.HttpContext.RequestServices.GetService();
    var entity = await dbContext.Products.FindAsync(int.Parse(id));
    if (entity == null)
    {
        // 如果未找到对应的模型对象,则返回失败
        bindingContext.Result = ModelBindingResult.Failed();
        return;
    }

    // 将模型对象绑定到模型上下文中
    bindingContext.Result = ModelBindingResult.Success(entity);
}

}

  1. 创建一个模型绑定提供程序来生成自定义模型绑定器:

public class RouteDataModelBinderProvider : IModelBinderProvider { public IModelBinder GetBinder(ModelBinderProviderContext context) { if (context.Metadata.ModelType == typeof(Product)) { return new RouteDataModelBinder(); }

    return null;
}

}

  1. 在控制器的路由路径中指定模型的ID值:

[HttpGet("{id}")] public IActionResult Get(Product product) { return Ok(product

相关内容

热门资讯

玩家必看教程!永盛透视挂功能教... 玩家必看教程!永盛透视挂功能教程,永盛切实存在有透视挂教程(有辅助挂技巧)1、玩家可以在永盛透视最简...
必备辅助推荐!天下透视挂功能a... 必备辅助推荐!天下透视挂功能app,天下真是真的是有透视挂app(有辅助挂技术)1、每一步都需要思考...
必看攻略!开运棋牌辅助器功能软... 必看攻略!开运棋牌辅助器功能软件,开运棋牌总是是有辅助器软件(有辅助挂app)在进入开运棋牌软件靠谱...
最新技巧!牛郎棋牌开挂功能插件... 最新技巧!牛郎棋牌开挂功能插件,牛郎棋牌都是存在有开挂插件(有辅助挂app)1、不需要AI权限,帮助...
我来教大家!叮叮娱乐透视功能插... 我来教大家!叮叮娱乐透视功能插件,叮叮娱乐一直有透视插件(有辅助挂技术)小薇(辅助器软件下载)致您一...
大神推荐!新518互娱透视功能... 大神推荐!新518互娱透视功能技巧,新518互娱都是有透视技巧(有辅助挂存在)1、让任何用户在无需新...
重要通知!6566体育辅助器功... 重要通知!6566体育辅助器功能神器,6566体育原来真的是有辅助器神器(证实有辅助挂);1、每一步...
查到实测!么么棋牌四川麻将辅助... 查到实测!么么棋牌四川麻将辅助器功能脚本,么么棋牌四川麻将果然真的是有辅助器脚本(有辅助挂功能)1、...
终于知道!大赢家跑得快开挂功能... 终于知道!大赢家跑得快开挂功能技巧,大赢家跑得快确实真的是有开挂技巧(有辅助挂技术)1、下载好大赢家...
一分钟揭秘!星星棋牌透视挂功能... 一分钟揭秘!星星棋牌透视挂功能app,星星棋牌一直真的是有透视挂app(有辅助挂方法)1、星星棋牌免...