View FilterExtension.cs
///<remarks> | |
/// Turns out this wasn't needed - and far less elegant than the existing extension method. | |
/// However, it is still an example of a generic way to match a given property with a value | |
/// and how to select that property by name (string) and compare its value to the value | |
/// that is passed in. It works... | |
///</remarks> | |
public static IList<T> ApplyFilter<T>(this IList<T> list, FilterDescriptor filter) { | |
// We wont allow filtering on anything but string type properties | |
if (filter.MemberType != typeof(string)) throw new ArgumentException("Filtering is only allowed for properties with a type of 'string'."); |
View em.js
window.Em = window.Em || {}; | |
Em = { | |
setFocusOutValidation: function (form) { | |
var s = $.data(form, "validator").settings; | |
s.onfocusout = function (element) { | |
if ($(element).val().length > 0) { | |
$(element).valid(); | |
} | |
}; |
View Adapter.js
(function ($) { | |
$.validator.addMethod("notequal", function (value, element, param) { | |
if (param.indexOf("#") == -1) return value != param; | |
return value != $(param).val(); | |
}, $.validator.messages.notequal); | |
$.validator.unobtrusive.adapters.add("notequal", ["field"], function (options) { | |
options.rules["notequal"] = options.params.field; | |
if (options.message) options.messages["notequal"] = options.message; | |
}); |
View jquery.text3d.js
/** | |
* 3D Text plugin for jQuery | |
* v1.0 | |
* Creates 3D text using CSS3 text-shadows | |
* | |
* By Craig Buckler, @craigbuckler, http://optimalworks.net | |
* | |
* As featured on SitePoint.com: | |
* http://www.sitepoint.com/css3-3d-text-jquery-plugin/ | |
* |
View AjaxRedirect.cs
using System; | |
using System.Web; | |
using System.Web.Mvc; | |
/// <summary> | |
/// See http://stackoverflow.com/questions/1171035/asp-net-mvc-custom-error-handling-application-error-global-asax/5952774#5952774 | |
/// for implementation details | |
/// </summary> | |
public class AjaxRedirectResult : RedirectResult { |
View MaximumWeightAttribute.js
<script type="text/javascript"> | |
$.validator.addMethod("maximumweight", | |
function (value, element, parameters) { | |
var carrier = $("#" + parameters["dependentproperty"]).val(); | |
var carriervalue = parameters["dependentvalue"].toString(); | |
var weightvalue = Number(parameters["weightvalue"]); | |
if (carrier == carriervalue && value > weightvalue) { | |
return false; | |
} | |
return true; |
View MaximumWeightAttribute.cs
public class MaximumWeightAttribute : ValidationAttribute, IClientValidatable { | |
private const string ERRORMSG = "Weight must not exceed {0} lbs."; | |
public string DependentProperty { get; set; } | |
public string DependentValue { get; set; } | |
public int MaximumWeight { get; set; } | |
public MaximumWeightAttribute(string dependentProperty, string dependentValue, int maximumWeight) { | |
this.DependentProperty = dependentProperty; |
View DynamicDropDownsHelper.cshtml
@helper DynamicDropDowns() { | |
<script type="text/javascript"> | |
function listChanged($list, $target, url) { | |
var listId = $list.val(); | |
if (listId == "") { // User selected first option, so clear and disable the list | |
$target.empty(); | |
enableList($target, false); | |
return; | |
} | |
$.getJSON(url, { id: listId }, function (data) { |
View sandbox.js
/** | |
* Just playing around with Function.prototype.call | |
* jsfiddle: https://jsfiddle.net/jesus_tesh/e7ufpLmz/ | |
**/ | |
console.clear(); | |
console.log("Basic function call"); | |
console.log("===================\n"); |
View gist:b9a4d457ae935069c4d5
<!DOCTYPE html> | |
<html ng-app="app"> | |
<head> | |
<meta charset="utf-8"> | |
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | |
<title>Demo</title> | |
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet"> | |
<style> | |
body { font-family: Calibri } | |
.form-horizontal .checkbox label { |