2010-10-13 5 views
8

J'ai créé un modèle d'affichage qui, lorsqu'il est passé une chaîne rend une zone de texte désactivéAsp.net Mvc Afficher le modèle de String, mais maintenant tout type simple veut l'utiliser!

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %> 
<%: Html.TextBoxFor(model => model, new { disabled = "disabled" })%> 

Ce qui fonctionne très bien. Cependant, pour une raison MVC veut essayer de DateTimes trucs et Ints à travers aussi bien, ce qui jette des exceptions

L'élément de modèle passé dans le dictionnaire est de type « System.Int32 », mais ce dictionnaire nécessite une élément de modèle de type 'System.String'.

Des idées?

+0

Quel est le nom du fichier ascx physique et quel code utilisez-vous pour l'invoquer? –

Répondre

10

Vous n'avez pas besoin de taper fortement le modèle sur une chaîne.

vous pouvez essayer quelque chose comme ceci:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<%= Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, 
      , new { disabled = "disabled" }) %> 

Et, selon vous, vous appelez comme ça

Html.DisplayModelFor(model => mode.name); 

Pour plus d'informations, voir un exemple de la valeur par défaut intégré dans le modèle de l'éditeur pour la chaîne dans Brad Wilsonarticle dans sa sa série sur les modèles dans ASP.NET MVC.

Vous devriez envisager de parcourir la série complète. Je ne peux pas exprimer à quel point cette série a été utile pour moi.

+1

Doux merci l'homme! Parfait! –

+0

Content de pouvoir aider :) –

Questions connexes