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

¿Fue útil?

Solución

Todavía no he probado la vista previa 1 pero hicieron lo que pides en este video del canal9:

http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-ASPNET-MVC-2-Preview-1-with-Phil-Haack-and-Virtual-Scott/

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.

Encontré blog para tener los mejores ejemplos y explicaciones. Parte-3 de la serie habla específicamente sobre los tipos de valores (String, decimal, Int32).

¡Disfruta!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top