десятичная дробь?в десятичную?поле дает десятичную ошибку приведения строки в MVC3? - PullRequest
0 голосов
/ 14 марта 2012

У меня есть DTO и ViewModel

У ботов есть то же свойство Price, что и у extact того же типа, например:

public Nullable<decimal> Price
    {
        get;
        set;
    }

В моем POST ActionResult при попытке сохранить в БД у меня есть ...

                Mapper.CreateMap<ListingFormModel, Listing>()


                var newListing = Mapper.Map<ListingFormModel, Listing>(m);


                _listingRepository.Add(newListing);

Ошибка, которую я получаю: Невозможно привести объект типа «System.Decimal» к типу «System.String».

Я только начинаю работать с automapper, буквально только сегодня, поэтому я озадачен, почему одни и те же типы не отображаются правильно ??? Проходя через документы по автомату, я вижу такие примеры:

.ForMember(dest => typeof(decimal?), src => src.ResolveUsing<MyDecimalResolver>());

Но не уверен, зачем мне делать распознаватель, если я что-то не делаю с самого начала? Есть предложения?

Полный код:

public class ListingFormModel
{

    [Required]
    public int ListingID
    {
        get;
        set;
    }

   .....


    [Required]
    [RegularExpression("([0-9]+)", ErrorMessage="Asking Price must be numbers only. Example: For $125,000 enter 125000")] //for 0-inf or 
    [Display(Name = "Asking Price")]
    [StringLength(10, ErrorMessage = "Asking Price must be numbers only and may not exceed 10 characters. Example: For $1,500,000 enter 1500000")]
    public Nullable<decimal> Price
    {
        get;
        set;
    }

.....

в моем проекте xxxx.Common DTO / POCO: пространство имен LOTW2012.Common { публичный частичный листинг класса { #region Примитивные свойства

    public virtual int ListingID
    {
        get;
        set;
    }

   ......

    public virtual Nullable<decimal> Price
    {
        get;
        set;
    }


  .....

Тогда КОНТРОЛЛЕР в проекте xxxx.Web:

[HttpPost]
    [ValidateAntiForgeryTokenWrapper(HttpVerbs.Post)]
    public ActionResult Create(ListingFormModel m)
    {
        try
        {
            if (ModelState.IsValid && SecurityHelper.ReferrerIsValid)
            {

                Mapper.CreateMap<ListingFormModel, Listing>()
                   // .ForMember(dest => dest.Price, opt => opt.ResolveUsing<NullableDecimalResolver>());

                var newListing = Mapper.Map<ListingFormModel, Listing>(m);


                _listingRepository.Add(newListing);

                return RedirectToAction("Index");
            }
            else
            {
                return View();
            }

        }
        catch
        {
            return View();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...