Voglio creare un modello di editor MVC 2 per un tipo di valore, ad esempio, ha fatto qualcuno con l'anteprima di 1 bit?ASP.NET Modello di editor MVC 2 per i tipi di valore, int
Molte grazie
Voglio creare un modello di editor MVC 2 per un tipo di valore, ad esempio, ha fatto qualcuno con l'anteprima di 1 bit?ASP.NET Modello di editor MVC 2 per i tipi di valore, int
Molte grazie
Non ho provato anteprima 1 ancora, ma hanno fatto ciò che si sta chiedendo in questo video Channel9:
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
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
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.
Il video mostra una creazione di un modello di editor basato su un tipo di riferimento (stringa) non un tipo di valore. –
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. –
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 –