<div id="age-slider"></div>
$("#age-slider").slider({ min: 16, max: 125 });
var selectedValue = $("#age-slider").slider('value');
var lowend = $("#range-slider").slider("values", 0); var highend = $("#range-slider").slider("values", 1);
<h2>Digital Snack Shack</h2><p>Welcome to the Digital Snack Shack!</p><p>We have a wide assortment of snacks to suit any budget. Use the slider to adjust the price range of items you'd like to see.</p><div id="snack-price"></div><div id="snack-list"> <% Html.RenderAction("ShowSnacks"); %> </div>
snack-price
DIV
snack-list
RenderAction()
ShowSnacks
<script language="javascript" type="text/javascript"> $(function () { $("#snack-price").slider({ range: true, min: 0, max: 3, values: [.3, 1.5], change: function (event, ui) {...}, step: 0.05 }); });</script>
change: function (event, ui) { var min = ui.values[0]; var max = ui.values[1]; $.ajax({ url: '/slider/snack/ShowSnacks', data: ({ minPrice: min, maxPrice: max }), success: function (data) { $("#snack-list").html(data); } }) }
<table> <tr> <th>Snack Name</th> <th>Price</th> </tr> <% foreach (var item in Model) { %> <tr> <td><%: item.Title %></td> <td><%: String.Format("{0:F}", item.Price) %></td> </tr> <% } %> </table>
public class Course { public string Title { get; set; } public string Description { get; set; } [Range(8, 75)] public int StudentCount { get; set; } }
<form method="post" action="<%: Url.Action("Create") %>"> <fieldset id="course-creator"> <legend>Course Details</legend> <%= Html.EditorForModel() %> <input type="submit" value="Add Course" /> </fieldset> </form>
EditorForModel()
RangeAttributes
HtmlHelper
RangeHelper
public static string RangeMinimum(this HtmlHelper helper, Type type, string member) { try { MemberInfo mi = type.GetMember(member)[0]; RangeAttribute ra = (RangeAttribute)mi.GetCustomAttributes(typeof(RangeAttribute), false)[0]; return ((int)ra.Minimum).ToString(); } catch (Exception) { return "0"; } }
Type
MemberInfo
RangeAttribute
RangeMaximum
Html.RangeMinimum(type, memberName)
<%@ Import Namespace="jQueryMVC.Areas.Slider.Helpers" %>
SPAN
INPUT
<span id="display-amount-<%: Html.ViewData.ModelMetadata.PropertyName %>"></span> <input type="hidden" id="<%: Html.ViewData.ModelMetadata.PropertyName %>" name="<%: Html.ViewData.ModelMetadata.PropertyName %>" /> <div style="padding:5px;display:inline; width:30%;"><div id="slider-<%: Html.ViewData.ModelMetadata.PropertyName %>"></div></div>
Html.ViewData.ModelMetadata.PropertyName
Html.ViewData.ModelMetadata.ContainerType
Html.ViewData.ModelMetadata
$(function () { // get our values from the class's RangeAttribute var $min = <%: Html.RangeMinimum(...ContainerType, ...PropertyName)%>; var $max = <%: Html.RangeMaximum(...ContainerType, ...PropertyName)%>; // setup our slider $('#slider-<%: ...PropertyName %>').slider({ min: $min, max: $max, value: ($min + $max) / 2, slide: function(event, ui) { $("#display-amount-<%: ...PropertyName %>").html(ui.value); $("#<%: ...PropertyName %>").val(ui.value); } }); // init our display and hidden input $("#display-amount-<%: ...PropertyName %>").html($('#slider-<%: ...PropertyName %>').slider("value")) $("#<%: ...PropertyName %>").val($('#slider-<%: ...PropertyName %>').slider("value")); });
RangeMinimum
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %> <%@ Import Namespace="jQueryMVC.Areas.Slider.Helpers" %><span id="display-amount-<%: Html.ViewData.ModelMetadata.PropertyName %>"></span> <input type="hidden" id="<%: Html.ViewData.ModelMetadata.PropertyName %>" name="<%: Html.ViewData.ModelMetadata.PropertyName %>" /> <div style="padding:5px;display:inline; width:30%;"><div id="slider-<%: Html.ViewData.ModelMetadata.PropertyName %>"></div></div><script type="text/javascript" language="javascript"> $(function () { var $min = <%: Html.RangeMinimum(Html.ViewData.ModelMetadata.ContainerType, Html.ViewData.ModelMetadata.PropertyName)%>; var $max = <%: Html.RangeMaximum(Html.ViewData.ModelMetadata.ContainerType, Html.ViewData.ModelMetadata.PropertyName)%>; $('#slider-<%: Html.ViewData.ModelMetadata.PropertyName %>').slider({ min: $min, max: $max, value: ($min + $max) / 2, slide: function(event, ui) { $("#display-amount-<%: Html.ViewData.ModelMetadata.PropertyName %>").html(ui.value); $("#<%: Html.ViewData.ModelMetadata.PropertyName %>").val(ui.value); } }); $("#display-amount-<%: Html.ViewData.ModelMetadata.PropertyName %>") .html($('#slider-<%: Html.ViewData.ModelMetadata.PropertyName %>').slider("value")) $("#<%: Html.ViewData.ModelMetadata.PropertyName %>") .val($('#slider-<%: Html.ViewData.ModelMetadata.PropertyName %>').slider("value")); }); </script>
UIHintAttribute
public class Course { public string Title { get; set; } public string Description { get; set; } [Range(8, 75)] [UIHint("Range")] public int StudentCount { get; set; } }