Avatar billede aero Nybegynder
03. november 2010 - 23:35 Der er 10 kommentarer og
1 løsning

C# MVC decimal problem

Har en cs side hvor jeg har flg.
    private static IQueryable<Product> fakeProducts = new List<Product> {
    new Product { Name = "Fodbold", Price = 249 },
    new Product { Name = "Surf board", Price = 2499 },
    new Product { Name = "Adidas Løbesko", Price = 1199 }
    }.AsQueryable();

og så har jeg denne side som viser tingene
    <div class="item">
        <h3><%= product.Name %></h3>
        <%= product.Description %>
        <h4><%= product.Price.ToString("c") %></h4>
    </div>

tingene vises fing som dk pris,00 i min web.config fil har jeg dette
<globalization culture="da-DK" uiCulture="da-DK" />

Mit problem er at hvis jeg ændre priserne til
    private static IQueryable<Product> fakeProducts = new List<Product> {
    new Product { Name = "Fodbold", Price = 249.95 },
    new Product { Name = "Surf board", Price = 2499.95 },
    new Product { Name = "Adidas Løbesko", Price = 1199.95 }
    }.AsQueryable();

så får jeg denne fejl
Literal of type double cannot be implicitly converted to type 'decimal'; use an 'M' suffix to create a literal of this type

ændring af c i min ToString til M virker ikke, hvad er fejlen hvis jeg skal kunne arbejde med 2 decimaler !?
Avatar billede arne_v Ekspert
04. november 2010 - 00:19 #1
new Product { Name = "Fodbold", Price = 249.95m },
    new Product { Name = "Surf board", Price = 2499.95m },
    new Product { Name = "Adidas Løbesko", Price = 1199.95m }
Avatar billede aero Nybegynder
04. november 2010 - 17:56 #2
ahh det er der M skal være.. smid venligst et svar Arne.
Avatar billede arne_v Ekspert
04. november 2010 - 18:03 #3
svar
Avatar billede aero Nybegynder
04. november 2010 - 18:03 #4
Arne har lige et tillægs spm.

Hvis jeg har dette

    public class Product
    {
        public int ProductID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public decimal Price { get; set; }
        public string Category { get; set; }
    }

og jeg gerne vil have netto pris, som kun skal kunne vises til admin samt Moms info bør man så stadigvæk lave det i en public class alá

    public class Product
    {
        public int ProductID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public decimal Price { get; set; }
        public string Category { get; set; }
        public decimal BuyPrice { get; set; }
    }

og hvordan kommer jeg moms procent ind i dette altså 1,25 !?
Avatar billede arne_v Ekspert
04. november 2010 - 18:03 #5
Jep. man bruger m suffix til at angive decimal literals.
Avatar billede arne_v Ekspert
04. november 2010 - 18:10 #6
Det er der flere måder at lave på.

Et par ideer:

1) lad Product klassen indeholde pris ekskl. moms og læg kun moms til langt ude i præsentations laget

2) lad Product klassen indeholde en Price class instans, Price er abstrakt og har to konkrete sub klasser PriceExclVat og PriceInclVat, PriceExclVat og PriceInclVat har metoder til at konvertere fra det ene til det andet
Avatar billede arne_v Ekspert
04. november 2010 - 18:11 #7
Overvej også at bruge konfiguration og evt. Spring.NET til at loade moms beregningen med.
Avatar billede aero Nybegynder
06. november 2010 - 20:35 #8
Arne lige et spm.

hvad hvis det ser sådan her ud !?

public class FakeProductsRepository : IProductsRepository
{
private static IQueryable<Product> fakeProducts = new List<Product> {
new Product { Name = "Football", Price = 25 },
new Product { Name = "Surf board", Price = 179 },
new Product { Name = "Running shoes", Price = 95 }
}.AsQueryable();
public IQueryable<Product> Products
{
get { return fakeProducts; }
}
}

så syntes jeg ikke.....
new Product { Name = "Football", Price = 25,95m },
virker, hvorfor ikke !??
Avatar billede aero Nybegynder
06. november 2010 - 20:35 #9
ik' noget glem det sry
Avatar billede arne_v Ekspert
06. november 2010 - 20:43 #10
:-)

eller skulle jeg måske sige


..  '
..    '
  ,,,,'
..    '
..  ,
Avatar billede aero Nybegynder
06. november 2010 - 21:16 #11
ja :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester