Modello di editor ASP.NET MVC 2 per tipi di valore, int
-
11-07-2019 - |
Domanda
Voglio creare un modello di editor MVC 2 per un tipo di valore, ovvero int, qualcuno ha fatto questo con l'anteprima di 1 bit?
Mille grazie
Soluzione
Non ho ancora provato l'anteprima 1 ma hanno fatto quello che chiedi in questo video di channel9:
Fanno sia DisplayFor che EditorFor, iniziano circa 2 minuti.
- Modifica -
Per il tipo di valore cioè int sono stato in grado di farlo funzionare allo stesso modo.
Crea un modello per passare alla mia 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; }
}
Collega la vista al modello usando la nuova logica del 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 crea un modello per ciascuno dei tipi, ad es. Int32:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
Editor For My Int32: <%= Html.TextBox("abc", Model.ToString())%>
L'ho inserito in Views \ Shared \ EditorTemplates \ Int32.ascx
Altri suggerimenti
La risposta di Nick Clarke funzionerà quando invii i valori al postback?
Nell'anteprima 2 di MVC2, chiamando Html.Textbox (" abc " ;, Model.ToString ()) visualizzerà una casella di testo con " .abc " aggiunto al nome, ad es.
<input id="StartDate_abc" name="StartDate.abc" type="text" value="02 Feb 09" />
che causerà problemi durante il postback e il tentativo di UpdateModel ().
Ho creato un modello di editor per un DateTime, per me funziona come segue:
/Views/Shared/EditorTemplates/DateTime.ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %>
<%= Html.TextBox(String.Empty, Model.ToString("dd MMM yy")) %>
oppure, per utilizzare DatePicker di jQuery per tutti i tuoi DateTimes aggiungi un riferimento a jQuery e jQueryUI alla tua pagina master o alla vista contenente 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 per usarlo tutto ciò di cui hai bisogno nella tua Vista è:
@Html.EditorFor(model => model.DueDate)
-Matt
Ho scritto un post sul blog su come farlo creando modelli riutilizzabili in MVC 2.
Il mio post spiega anche la relazione tra TemplateInfo
e modelli.