Estoy utilizando el enlace de modelo con Entity Framework y tengo una entrada Html.TextBoxFor (model => model.date). Sé cómo decirle a jQuery cómo implementar un datepicker pero no en este contexto. ¿Qué necesitaría agregar aquí para tener una ventana emergente de calendario cuando el usuario ingresa a este campo?¿Cómo se usa jQuery UI Datepicker con MVC's Html.TextBoxFor?
Respuesta
Querrá utilizar la sobrecarga HtmlHelper que le permite especificar atributos Html. Luego, apúntalos con el selector de jquery.
// in view
<%= Html.TextBoxFor(x => x.Date, new { @class="datepicker" })%>
// in js
$(document).ready({
$('.datepicker').datepicker();
});
Aunque recomiendo usar EditorFor
en su lugar.
<%= Html.EditorFor(x => x.Date)%>
Se puede crear un EditorTemplate para manejar cualquier campo que es un DateTime
y tienen que muestre el campo apropiado.
Crear /Views/Shared/EditorTemplates/DateTime.ascx
y poner esto en él ...
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime>" %>
<%= Html.TextBox("", Model.ToShortDateString(), new { @class="datepicker" })%>
O si lo necesita para permitir de DateTime con nulos:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" %>
<%= Html.TextBox("", (Model.HasValue? Model.Value.ToShortDateString():""), new { @class="datepicker"})%>
entonces siempre se puede utilizar EditorFor y tener una central para ascx edite si alguna vez desea modificar la forma en que se manejan las fechas en sus vistas.
Desde el aspecto de la muestra de código (TextBoxFor) que está utilizando MVC2 ....
He aquí un ejemplo using MVC 2 que crea una plantilla que llamará al selector de fecha jQery cada vez que utilice una fecha & un segundo más in depth example.
El segundo eslabón de su respuesta es increíble !! Gracias – VoodooChild
Me alegro de que te haya gustado. ¡NetNet MVC definitivamente tiene muchas pepitas buenas! – klabranche
Cree un EditorTemplate para el tipo DateTime y luego use EditorFor en lugar de TextBoxFor. La edición de plantilla debe ser un control de usuario llamado DateTime.ascx con el código de algo como:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime>" %>
<%: Html.TextBox("", String.Format("{0:MM-dd-yyyy}", Model))%>
<script type="text/javascript">
$(document).ready(function() {
$("#<%: ViewData.ModelMetadata.PropertyName %>").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'mm-dd-yy',
showButtonPanel: true,
gotoCurrent: true
});
});
</script>
Salida charla de Scott Hanselman sobre MVC 2 en el canal 9. http://channel9.msdn.com/posts/matthijs/ASPNET-MVC-2-Basics-Introduction-by-Scott-Hanselman/
me gustaría ir con un enfoque similar a Marc's. Aquí es mi propia versión de la misma:..
"%><%string name = ViewData.TemplateInfo.HtmlFieldPrefix;%>
<%string id = name.Replace(".", "_");%>
<div class="editor-label">
<%= Html.LabelFor(model => model) %>
</div>
<div class="editor-field">
<%= Html.TextBox("", (Model.HasValue ? Model.Value.ToString("dd-MM-yyyy") : string.Empty), new { @class = "date" }) %>
<%= Html.ValidationMessageFor(model => model)%>
</div>
<script type="text/javascript">
$(document).ready(function() {
$("#<%=id%>").datepicker({
showOn: 'both',
dateFormat: 'dd-mm-yy',
changeMonth: true,
changeYear: true,
showOn: 'button',
buttonImage: '<%=Url.Content("~/Content/images/calendar.gif") %>'
});
});
</script>
crear su EditorTemplates carpeta bajo la carpeta compartida y el nombre de DateTime.ascx
Hay errores en su código cuando lo pego. – VoodooChild
- 1. Jeditable con jQuery UI Datepicker
- 2. jQuery UI Datepicker - Cómo alterar Datepicker HTML
- 3. Problemas con jQuery UI Datepicker
- 4. jQuery UI Datepicker con jQuery tipsy
- 5. ¿Cómo localizo jQuery UI Datepicker?
- 6. jQuery-UI Datepicker: ¿Arrastrable?
- 7. jQuery UI datepicker translation
- 8. jQuery UI datepicker rendimiento
- 9. Usar JQuery UI Datepicker con íconos de Jquery UI Theme
- 10. jQuery UI - Datepicker - Ocultar año
- 11. jQuery-UI fecha predeterminada datepicker
- 12. Formateo de jQuery UI datepicker
- 13. jQuery UI: DatePicker ¿SOLO CSS?
- 14. JQuery UI DatePicker - Cómo abrir manualmente un datepicker
- 15. jQuery UI Datepicker Today Enlace
- 16. jQuery UI Datepicker y datejs
- 17. jQuery UI - Convierta jQuery UI Datepicker a hora UNIX
- 18. Cómo abrir jQuery UI DatePicker onclick?
- 19. jQuery UI datepicker: agregue 6 meses a otro datepicker
- 20. jQuery UI datepicker: Configurar atajos de teclado
- 21. jQuery UI diferencia Datepicker en días
- 22. getDate con Jquery Datepicker
- 23. problema al clonar jQuery UI datepicker
- 24. jquery-ui datepicker change z-index
- 25. jQuery ui - datepicker prevenir la actualización onSelect
- 26. jquery ui datepicker dentro de asp.net UpdatePanel
- 27. jquery ui datepicker formato de fecha
- 28. Resaltar fechas en jquery UI datepicker
- 29. JQuery UI datepicker gotoCurrent no funciona
- 30. Respuesta personalizada de JQuery UI DatePicker
+1: sin embargo, el 'DateTime.ascx' y el EditorFor no funcionaron para mí. Solo creo agregue el control ascx' Views/Shared/EditorTemplates/DateTime.ascx 'con el código que tiene a la derecha? Qué pasa con el 'Model.ToShort..' ¿lo actualizo? ¿Dónde entra el script? – VoodooChild
¿Cómo se incluye' <% = Html.TextBox' en ' como archivo cx'? Tengo 'Html' error indefinido –