Question

Je souhaite créer un modèle d'éditeur MVC 2 pour un type de valeur, à savoir int, est-ce que quelqu'un l'a déjà fait avec l'aperçu 1 bits?

Merci beaucoup

Était-ce utile?

La solution

Je n'ai pas encore essayé l'aperçu 1, mais ils ont fait ce que vous demandez dans cette vidéo sur channel9:

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

Ils font les deux DisplayFor et EditorFor, commence environ 2 minutes.

- Modifier -

Pour le type de valeur, c’est-à-dire int, j’ai réussi à le faire fonctionner de la même manière.

Créez un modèle à transmettre à ma vue:

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; }
}

Liez la vue au modèle à l'aide de la nouvelle logique de modèle:

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

Créez ensuite un modèle pour chacun des types, par exemple. Int32:

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

Je mets cela dans Views \ Shared \ EditorTemplates \ Int32.ascx

Autres conseils

La réponse de Nick Clarke fonctionnera-t-elle lorsque vous soumettez les valeurs sur publication?

Dans l'aperçu 2 de MVC2, appelez Html.Textbox ("abc", Model.ToString ()). affichera une zone de texte avec " .abc " ajouté au nom, par exemple

<input id="StartDate_abc" name="StartDate.abc" type="text" value="02 Feb 09" />

ce qui posera des problèmes lorsque vous publiez et tentez UpdateModel ().

J'ai créé un modèle d'éditeur pour un DateTime, les travaux suivants fonctionnent pour moi:

/Views/Shared/EditorTemplates/DateTime.ascx:

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

ou, pour utiliser DatePicker de jQuery pour tous vos DateTimes ajoutez une référence à jQuery et jQueryUI à votre page maître ou à la vue contenant l'appel à 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>

Mise à jour: ASP.NET MVC3 , à l'aide de la syntaxe Razor:

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

Et utiliser tout ce dont vous avez besoin dans votre vue est:

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

-Matt

J'ai écrit un article de blog expliquant comment faire cela en créant des modèles réutilisables dans MVC 2.

Mon article explique également la relation entre TemplateInfo et les modèles.

scroll top