0
votes

Puis-je forcer la textbox de rasoir pour utiliser un séparateur décimal spécifique que celui par défaut?

J'ai le marquage suivant: xxx

lorsque le taux Propriété est par exemple. 12.45 Dans la DB, le texte ci-dessus> textboxfor rend le numéro avec un séparateur de virgule et non la période que je veux. Puis-je faire quelque chose en dehors de la définition des paramètres de langue sur IIS?


0 commentaires

3 Réponses :


0
votes

Essayez ceci:

web.config: strong> em> p> xxx pré>

Vous pouvez également appliquer ceci pour la vue Lorsque vous souhaitez forcer ce paramètre: P>

public static class MyHelpers
{
    //Custom HTML Helper method used for setting "class" and disabled attributes of MyDropdownlist
    public class MySelectItem : SelectListItem
    {
        /* Since you are passing this data using ViewData, you don't have a limitation and 
        you can put anything there. I advise that you use ViewBag instead of ViewData. */
        public string Class { get; set; } 
        public string Disabled { get; set; }
    }

    public static MvcHtmlString MyDropdownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<MySelectItem> list, string optionLabel, object htmlAttributes)
    {
        return MyDropdownList(htmlHelper, ExpressionHelper.GetExpressionText(expression), list, optionLabel, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
    }

    public static MvcHtmlString MyDropdownList(this HtmlHelper htmlHelper, string name, IEnumerable<MySelectItem> list, string optionLabel, IDictionary<string, object> htmlAttributes)
    {
        TagBuilder dropdown = new TagBuilder("select");
        dropdown.Attributes.Add("name", name);
        dropdown.Attributes.Add("id", name);
        StringBuilder options = new StringBuilder();

        // Make optionLabel the first item that gets rendered.
        if (optionLabel != null)
            options = options.Append("<option value='" + String.Empty + "'>" + optionLabel + "</option>");

        foreach (var item in list)
        {
            if(item.Disabled == "disabled")
                options = options.Append("<option value='" + item.Value + "' class='" + item.Class + "' disabled='" + item.Disabled + "'>" + item.Text + "</option>");
            else
                options = options.Append("<option value='" + item.Value + "' class='" + item.Class + "'>" + item.Text + "</option>");
        }
        dropdown.InnerHtml = options.ToString();
        dropdown.MergeAttributes(new RouteValueDictionary(htmlAttributes));
        return MvcHtmlString.Create(dropdown.ToString(TagRenderMode.Normal));
    }
}


1 commentaires

Utilisation de EN-US Culture Mesures avec d'autres paramètres que je veux laissé seul, comme le format de date.



0
votes

Utiliser RegEx sera une option, si vous n'êtes pas intéressé par l'ingénierie. Un exemple de code comme ci-dessous fonctionnerait. Je n'a pas testé le code fort>, c'est juste pour l'illustration.

@Html.TextBoxFor(m => Regex.Replace(m.Items[i].Rate.ToString(), @",(?<=\d,)(?=\d)", "."), new { @class = "form-control text-center Rate", @readonly = Model.PreTenderLockedDown, title = "Rate" })


3 commentaires

Si je fais un Tostring (cultureInfo.invariantculture) Je reçois la période que je veux comme séparateur décimal sans la complexité ou la surcharge de la regex.


Je pense que cela dépendrait de la culture du système d'exploitation par défaut. Corrige moi si je me trompe.


invariantCulture est juste que, invariant. Il a toujours les mêmes paramètres quelle que soit la culture du système d'exploitation.



0
votes

Vous pouvez utiliser l'attribut "valeur" de textboxfor markup. xxx

ici "{0: 0. ###}" signifie qu'il affichera 3 chiffres sous des points décimaux.


0 commentaires