Skip to content

Instantly share code, notes, and snippets.

View mesuttalebi's full-sized avatar

Mesut Talebi mesuttalebi

View GitHub Profile
@mesuttalebi
mesuttalebi / ViewSelectorAttribute.cs
Created December 12, 2014 13:28
ViewSelector For Asp.net MVC - multiserve for one request in asp.net mvc- viewselector based browser
public class BrowserSpecificAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
var viewResult = filterContext.Result as ViewResult;
if (viewResult == null)
return;
// Figure out the view name
var context = filterContext.Controller.ControllerContext;
var viewName = viewResult.ViewName;
@mesuttalebi
mesuttalebi / AjaxOnlyAttribute.cs
Created December 12, 2014 13:56
Restricting a method to Ajax calls only, an example of ActionMehodSelector in Asp.net MVC, If request is an ajax request, it will be served by action method, Else It will not.
public class AjaxOnlyAttribute : ActionMethodSelectorAttribute
{
public override Boolean IsValidForRequest(
ControllerContext controllerContext, MethodInfo methodInfo)
{
return controllerContext.HttpContext.Request.IsAjaxRequest();
}
}
@mesuttalebi
mesuttalebi / OnlyIfPostedFromButtonAttribute.cs
Created December 12, 2014 14:08
Restricting a method to a given submit button, Using ActionMethod Selector to server multi submit form, to behave different for each submit button in Asp.net MVC
public class OnlyIfPostedFromButtonAttribute : ActionMethodSelectorAttribute
{
public string SubmitButton { get; set; }
public override Boolean IsValidForRequest(ControllerContext controllerContext,
MethodInfo methodInfo)
{
// Check if this request is coming through the specified submit button
var o = controllerContext.HttpContext.Request[SubmitButton];
return o != null;
}
@mesuttalebi
mesuttalebi / GetAllIncluding()
Created February 25, 2015 14:11
Entity Framework Eager loading data with selective properties. A dynamic way to add context.entities.Include(x=> x.propery1).Include(x=> x.property2)....
public IQueryable<Entity> GetAllIncluding(params Expression<Func<Entity, object>>[] includedProperties)
{
IQueryable<Entity> query = db.Groups;
foreach (var includedProperty in includedProperties)
{
query = query.Include(includedProperty);
}
return query;
}
@mesuttalebi
mesuttalebi / GenericRepository.cs
Last active August 29, 2015 14:22
Generic Repository Interface and class (used in repository pattern)
public class GenericRepository<T> : IRepository<T> where T: class
{
private readonly DbContext _context;
private IDbSet<T> dbSet;
public GenericRepository(DbContext context)
{
_context = context;
}
@mesuttalebi
mesuttalebi / Jquery Validator Parse After Ajax Load.js
Created December 17, 2016 10:40
Jquery.validator.unbostrusive.parse form after ajax load
$(document).on('click', 'button.save', function (event) {
$.validator.unobtrusive.parse('#InspectionScopeForm');
});
@mesuttalebi
mesuttalebi / JsonStringModelBinder.cs
Created June 21, 2018 08:33
A ModelBinder to convert a JsonString to List (has dependency on NewtonSoft.Json)
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Newtonsoft.Json;
using System;
using System.Threading.Tasks;
namespace AcerPlatformV2.Presentation.Helpers
{
/// <summary>
/// This model binder resolve a JsonString to A List Of T
/// </summary>
@mesuttalebi
mesuttalebi / CustomClaimsPrincipalFactory.cs
Created November 12, 2018 07:06
CustomClaimsPrincipalFactory
// <copyright file="CustomClaimsPrincipalFactory.cs" company="">
// Copyright (c)
// </copyright>
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
using Platform.Business.Interfaces;
using Platform.Domain.Entities;
namespace AcerPlatformV2.Business.Services
{
public class TransactionService : ITransactionService
{
private IDbContextTransaction _transaction;
private readonly IUnitOfWork _unitOfWork;
public TransactionService(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
@mesuttalebi
mesuttalebi / DynamicPredicateBuilder.cs
Created January 29, 2019 04:56
Dynamic Predicate Builder
// TODO: Move to Infrastructıre.
public static class PredicateBuilder
{
public static Expression<Func<T, bool>> True<T>() { return f => true; }
public static Expression<Func<T, bool>> False<T>() { return f => false; }
public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1,
Expression<Func<T, bool>> expr2)
{
var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());