2016-10-08 4 views
0

Je crée un formulaire MVC avec tous les types de champs. Ceux-ci sont sous la forme normale MVCComment ajouter du texte supplémentaire à un TextBoxFor dans MVC

@Html.TextBoxFor(Function(x) x.Auto.Length, New With {.Class = "form-control", .Disabled = True}) 

Ici, je veux ajouter l'unité de mesure dans ce domaine directement, dans ce cas « mm ». J'ai déjà créé une extension que j'aimerais appeler directement, mais sans succès.

<Extension> 
Public Function Add_Appendix(value As Integer, appendix As String) As String 

    Return value.ToString & " " & appendix 
End Function 

Ce serait bien si je pouvais l'appeler comme:

@Html.TextBoxFor(Function(x) x.Auto.Length.Add_Appendix("mm"), New With {.Class = "form-control", .Disabled = True}) 

Mais je reçois l'erreur

Les modèles peuvent être utilisés uniquement avec accès terrain, accès à la propriété, index de tableau à dimension unique ou expressions d'indexeur personnalisé à paramètre unique.

Comment puis-je rendre cela possible? thx.

+0

Vous n'utilisez pas les aides '' For' pour les expressions aléatoires. Pour les expressions aléatoires, vous utilisez celles sans 'For',' TextBox' dans votre cas. – GSerg

+0

@GSerg: ça, c'est simple .. J'ai perdu trop de temps pour trouver cette solution simple. Thx mate! Si vous mettez cette explication en guise d'aswer, je la vérifierai comme correcte. – Yosoyke

+1

OT - "Appendice" est la mauvaise terminologie. Cela devrait être "Suffix". – jmcilhinney

Répondre

1

Les aides *For n'autorisent pas les expressions aléatoires car elles doivent être associées à une propriété existante de votre modèle. Si vous souhaitez utiliser un assistant *For, vous devez créer une propriété sur votre modèle qui représente la valeur modifiée.

Si vous ne voulez pas faire cela, vous devez utiliser les aides sans *For (ou ne pas utiliser d'aides du tout), par ex. @Html.TextBox dans votre cas. Il est probable que vous ne devriez pas faire cela parce que cela ne fait que rendre votre vie plus difficile. Vous devrez vous assurer que vous déposez le mm ajouté lorsque vous postez votre modèle, et pour vous assurer qu'il n'ajoute pas mm une seconde fois. Mettez plutôt mm après la zone de texte.