Plantilla de editor ASP.NET MVC 2 para tipos de valor, int
-
11-07-2019 - |
Pregunta
Quiero crear una plantilla de editor MVC 2 para un tipo de valor, es decir, int, ¿alguien ha hecho esto con la vista previa de 1 bit?
Muchas gracias
Solución
Todavía no he probado la vista previa 1 pero hicieron lo que pides en este video del canal9:
Hacen tanto DisplayFor como EditorFor, comienza alrededor de 2 minutos.
--Editar--
Para el tipo de valor, es decir, int pude hacer que funcionara de la misma manera.
Crear un modelo para pasar a mi vista:
public class HomeController : Controller
{
public ActionResult Index()
{
HomeModel model = new HomeModel();
model.message = "Welcome to ASP.NET MVC!";
model.number = 526562262;
model.Date = DateTime.Now;
return View(model);
}
}
public class HomeModel
{
public string message { get; set; }
public int number { get; set; }
public DateTime Date { get; set; }
}
Enlace de vista al modelo utilizando la nueva lógica de plantilla:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<HomeModel>" %>
<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<p>
<% Html.EditorFor(c => c.message); %>
</p>
<p>
<% Html.EditorFor(c => c.number); %>
</p>
<p>
<% Html.EditorFor(c => c.Date); %>
</p>
Luego cree una plantilla para cada uno de los tipos, p. Int32:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
Editor For My Int32: <%= Html.TextBox("abc", Model.ToString())%>
Puse esto en Views \ Shared \ EditorTemplates \ Int32.ascx
Otros consejos
¿La respuesta de Nick Clarke funcionará cuando envíe los valores en la devolución de datos?
En MVC2 preview 2, llamando a Html.Textbox (" abc " ;, Model.ToString ()) renderizará un cuadro de texto con " .abc " agregado al nombre, p.
<input id="StartDate_abc" name="StartDate.abc" type="text" value="02 Feb 09" />
lo que causará problemas cuando devuelva e intente UpdateModel ().
Hice una plantilla de editor para DateTime, lo siguiente funciona para mí:
/Views/Shared/EditorTemplates/DateTime.ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %>
<%= Html.TextBox(String.Empty, Model.ToString("dd MMM yy")) %>
o, para usar DatePicker de jQuery para todas sus DateTimes agregue una referencia a jQuery y jQueryUI a su página maestra o a la vista que contiene la llamada a EditorFor.
/Views/Shared/EditorTemplates/DateTime.ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %>
<%= Html.TextBox("", Model.ToString("dd MMM yy")) %>
<script type="text/javascript">
$("#<%= ViewData.ModelMetadata.PropertyName %>").datepicker({ dateFormat: 'dd M y' });
</script>
Actualización: ASP.NET MVC3 , utilizando la sintaxis de Razor:
@model System.DateTime
@Html.TextBox("", Model.ToString("dd MMM yy"))
<script type="text/javascript">
$("#@ViewData.ModelMetadata.PropertyName").datepicker({ dateFormat: 'dd M y' });
</script>
Y para usarlo todo lo que necesita en su Vista es:
@Html.EditorFor(model => model.DueDate)
-Matt
He escrito una publicación de blog sobre cómo hacer esto creando plantillas reutilizables en MVC 2.
Mi publicación también explica la relación entre TemplateInfo
y las plantillas.