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

È stato utile?

Soluzione

Non ho ancora provato l'anteprima 1 ma hanno fatto quello che chiedi in questo video di channel9:

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

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.

Ho trovato blog per avere i migliori esempi e spiegazioni. Part-3 della serie parla specificamente di tipi di valore (String, decimal, Int32).

Enjoy!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top