2009-08-03 6 views

risposta

4

Non ho provato anteprima 1 ancora, ma hanno fatto ciò che si sta chiedendo in questo video Channel9:

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

Essi fare entrambe le cose DisplayFor e EditorFor, inizia circa 2 minuti .

--Edit--

Per tipo di valore cioè int ho potuto farlo funzionare nello stesso modo.

Creare un modello da passare al mio punto di 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; } 
} 

vista Link al modello utilizzando la nuova logica modello:

<%@ 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> 

quindi creare un modello per ciascuna delle tipi eg Int32:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
Editor For My Int32: <%= Html.TextBox("abc", Model.ToString())%> 

Ho messo questo in Visualizzazioni \ Shared \ EditorTemplates \ Int32.ascx

+0

Il video mostra una creazione di un modello di editor basato su un tipo di riferimento (stringa) non un tipo di valore. –

+0

decano: ho migliorato la mia risposta, ma ho appena notato nelle note di rilascio che c'è un problema noto con i tipi di valore. Sembrava funzionare per me sopra, quindi non sono sicuro di ciò a cui è collegato. –

+0

Grazie Nick, stavo dichiarando il tipo di valore nella mia dichiarazione della pagina, ad es. Inherits = "System.Web.Mvc.ViewUserControl " rimuovendo questo risolve il problema come da esempio. Grazie per tutto il tuo aiuto –

15

di Will Nick Clarke lavoro risposta quando si invia i valori su postback?

In MVC2 anteprima 2, chiamando Html.Textbox ("abc", Model.ToString()) renderizza una casella di testo con ".abc" aggiunto al nome, ad es.

che causerà problemi quando si postback e si tenta di UpdateModel().

ho fatto un modello di editore per un DateTime, le seguenti opere per me:

/Views/Shared/EditorTemplates/DateTime.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %> 
<%= Html.TextBox(String.Empty, Model.ToString("dd MMM yy")) %> 

o, per usare DatePicker di jQuery per tutto il vostro DateTimes aggiungi un riferimento a jQuery e jQueryUI alla tua pagina master o alla vista che contiene la chiamata 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> 

Aggiornamento: ASP.NET MVC3, utilizzando la sintassi Razor:

@model System.DateTime 
@Html.TextBox("", Model.ToString("dd MMM yy")) 
<script type="text/javascript"> 
    $("#@ViewData.ModelMetadata.PropertyName").datepicker({ dateFormat: 'dd M y' }); 
</script> 

e di utilizzarlo tutto ciò che serve nella tua View è:

@Html.EditorFor(model => model.DueDate) 

-Matt

2

Ho scritto a blog post su come fare questo creando modelli riutilizzabili in MVC 2.

Il mio post spiega anche la relazione tra TemplateInfo e modelli.

1

Ho trovato Brad Wilson blog per avere i migliori esempi e spiegazioni. Part-3 della serie parla in modo specifico dei tipi di valore (String, decimal, Int32).

Divertiti!

Problemi correlati