Проблема модели размещения со структурой -- asp.net-mvc поле с участием asp.net-mvc-5 поле с участием modelbinders пол Связанный проблема

ModelBinding Issue with a Struct


0
vote

проблема

русский

У меня есть ViewModel, который содержит следующую структуру:

 <код> public struct PricesAndDiscounts {     public decimal FlatOff;     public decimal UnitPrice;     public decimal TotalDiscount;     public decimal TotalOptions;     public decimal TotalOrderPrice; }   

ViewModel находится в наследстве такую, чтобы существует собственность типа ценников, который является членом DisplayRowPriceviewModel, который является членом ManageOrderedItmodel:
-ManageorderEditmodel
--Displayrowpriceviewmodel.

«Форма» запроса точно так, как я бы хотел и ожидать (см. Скриншот Fiddler элементов формы):

Введите описание изображения здесь

Однако на сервере ModelBinder по умолчанию создает структуру в качестве нулей для каждого из его членов. Все остальное в просмотрах моделе было создано ModelBinder без проблем.

Мне нужно создать пользовательский modelbinder для моей пользовательской структуры?

Редактировать - Добавление больше деталей
Подпись:

 <код> public ActionResult ManageOrder([FromBody]ManageOrderEditModel model)   

Я попробовал его без атрибута. Кроме того, тот факт, что цены и потраты - это структура, это проблема. Я изменил его на класс, и все члены приходят как Zeros, а не ценностями, которые вы можете видеть в Fiddler из формы.

MANALORSEDITMODEL

 <код> public class ManageOrderEditModel {     public DisplayOptionsInDropDownViewModel DisplayOptionsInDropDownViewModel { get; set; }     public DisplayRowPriceViewModel DisplayRowPriceViewModel { get; set; }      public int ID { get; set; }     public int RegType { get; set; } }   

<Сильные> DisplayRowPriceViewModel

 <код> public class DisplayRowPriceViewModel {     public Discount Discount { get; set; }     public int NumberOfAdditionalLocations { get; set; }     public OrderStatus OrderStatus { get; set; }     public double Price { get; set; }     public PricesAndDiscounts PricesAndDiscounts { get; set; }     public RegType  RegistrationType { get; set; }     public decimal RowPrice { get; set; } }   
Английский оригинал

I have a ViewModel which contains the following struct:

public struct PricesAndDiscounts {     public decimal FlatOff;     public decimal UnitPrice;     public decimal TotalDiscount;     public decimal TotalOptions;     public decimal TotalOrderPrice; } 

The ViewModel is in a heirarchy such that there is a property of type PricesAndDiscounts which is a member of the DisplayRowPriceViewModel which is a member of the ManageOrderEditModel:
-ManageOrderEditModel
--DisplayRowPriceViewModel.

The "shape" of the request is exactly as I would want and expect (see Fiddler screenshot of form items):

enter image description here

However, at the server, the default modelbinder instantiates the struct as zeros for each of its members. Everything else in the ViewModels were created by the ModelBinder without a problem.

Do I need to create a custom ModelBinder for my custom struct?

Edit - adding more details
The signature is:

public ActionResult ManageOrder([FromBody]ManageOrderEditModel model) 

I've tried it without the FromBody attribute. Also, the fact that PricesAndDiscounts is a struct is njot the issue. I changed it to a class and all members come in as zeros, instead of the values you can see in Fiddler from the form.

ManageOrderEditModel

public class ManageOrderEditModel {     public DisplayOptionsInDropDownViewModel DisplayOptionsInDropDownViewModel { get; set; }     public DisplayRowPriceViewModel DisplayRowPriceViewModel { get; set; }      public int ID { get; set; }     public int RegType { get; set; } } 

DisplayRowPriceViewModel

public class DisplayRowPriceViewModel {     public Discount Discount { get; set; }     public int NumberOfAdditionalLocations { get; set; }     public OrderStatus OrderStatus { get; set; }     public double Price { get; set; }     public PricesAndDiscounts PricesAndDiscounts { get; set; }     public RegType  RegistrationType { get; set; }     public decimal RowPrice { get; set; } } 
</div
        
         
         

Список ответов

5
 
vote
vote
Лучший ответ
 

Вам необходимо создать свойства вместо полей, как так:

 <код> Object1  

и, надеюсь, это будет работать.

 

You need to create properties instead of fields like so:

public struct PricesAndDiscounts {     public decimal FlatOff { get; set; }     public int UnitPrice { get; set; }     public decimal TotalDiscount { get; set; }     public decimal TotalOptions { get; set; }     public decimal TotalOrderPrice { get; set; } } 

And hopefully it will work.

</div
 
 
 
 
1
 
vote

Я не уверен, как вы это сделали, но кажется, что есть проблема с тем, как вы передаете данные.

Я только что создал такую ​​же модель, как вашу, и он успешно создает структуру и назначить его значение.

Тогда я звоню, использует почтальон.

Вот так, как я звоню. (Я прошел данные как JSON)

Введите описание изображения здесь

Вот результат.

Введите описание изображения здесь

Другое решение это делает свойство вместо поля в структуре. Это предложено @imaran RASHID.

 

I am not sure How you did it but it seems that there is problem with the way you pass data.

I just created same model as yours and it successfully create structure and assign value to it.

Then I call is using PostMan.

Here is the way I call. ( I passed data as Json)

enter image description here

Here Is result.

enter image description here

Another solution to this is make property instead of field in structure. This is suggested by @Imaran Rashid.

</div
 
 

Связанный проблема

0  Google STASS TOOCOLPOLETE не работает после частичной нагрузки страницы в ASP.NET MVC  ( Google places autocomplete not working after a partial page load in asp net mvc ) 
Я загружаю частичную страницу с адресной формой с помощью jQuery .Load (). Это работает и открывает модальное окно, содержащееся на частичной странице. Тогд...

0  Как получить имя страницы вентилятора Facebook в моем приложении в Tab Facebook  ( How to get facebook fan page name in my facebook tab application ) 
Я создал приложение Tab Facebook, которое позволяет Admin Page Facebook FancoS добавить его в качестве вкладки на их вентилятор. До сих пор все хорошо работае...

0  Сохранение файла в папке  ( Saving file in a folder ) 
В моем приложении MVC я позволяю пользователям создать новый файл PDF, используя редактор. Я хочу сохранить созданный файл в папке, как я могу сделать это? Эт...

0  Как я могу изменить текст кнопки на странице нагрузки  ( How can i change the button text on page load ) 
Я хочу изменить текст кнопки на нагрузке страницы. Я использую статические данные, и моя кнопка не отображается. <Сильная> Модель <код> CREATE TABLE [dbo...

39  Где я должен делать инъекцию с Ninject 2+ (а как я могу организовать мои модули?)  ( Where should i do injection with ninject 2 and how do i arrange my modules ) 
У меня есть решение с двумя актуальными (к этому вопросу) проекты и несколько других; Класс библиотека с функциональностью, используемой несколькими другим...

0  Обновить OutputsCache на Expire C # MVC  ( Refresh outputcache on expire c sharp mvc ) 
Я создаю веб-приложение, которое запрашивает базу данных и получает данные из него. Мне нужно использовать <код> OutputCaching , чтобы кэшировать данные, полу...

2  Asp.net с mvc model model в одном представлении (создание, обновление)  ( Asp net with mvc multiple model in one view create update ) 
У меня проблемы в ASP.NE MVC с несколькими моделью в одном представлении на создании и обновлении Я работаю на экзаменной системе Вопросы класса и ответы клас...

3  XVal и шаблон ViewModel - можно ли сделать?  ( Xval and the viewmodel pattern can it be done ) 
Я добавил XVal в приложение Nerddinner - пока так хорошо, я получаю проверку на стороне клиента с jQuery.validate в одной строке, которая действительно красив...

0  Как доступом доступа веб-проекта MVC в другой проект MVC API  ( How a mvc web project backend access to another mvc api project ) 
Есть буксир ASP.NET MVC Projects.one IS MVC API, а другой - MVC Web. MVC API с использованием OWIN для AUTH2. И веб-доступ MVC доступа к API, а не JS. Проблем...

67  Отображение изображения из базы данных в ASP MVC  ( Display image from database in asp mvc ) 
Я получаю изображение в байтовом формате массива из контроллера, как я могу отобразить это в виду? в простом смысле. ...

0  IdentityServer3: Owin Katana Marmware бросает ошибку «Invalid_Client», так как она не может получить токен  ( Identityserver3 owin katana middleware is throwing invalid client error as it ) 
Мы используем IdentityServer3 в качестве провайдера идентичности и промежуточное программное обеспечение Owin Katana, чтобы сделать рукопожатие на основе Conn...

5  Соответствующий жизненный цикл жизненного цикла репозитория W / Ninject в MVC  ( Appropriate repository lifecycle scope w ninject in mvc ) 
Каково соответствующий жизненный цикл для хранилища для хранилища и контекста EF при использовании структуры объекта 4 с Ninject в приложении MVC 3? Я испол...

0  Передать коллекцию значений к действию, динамически созданные текстовые ящики  ( Pass a collection of values to action dynamically created textboxes ) 
Я создаю текстовые коробки динамически с jQuery. Что мне интересно, как я могу отправить эти ценности в мои действия сейчас с моим просмотром Model, вроде это...

3  Удалить элемент от JsonResult в C #  ( Remove an element from jsonresult in c sharp ) 
У меня есть <код> JsonResult объект для возврата из метода MVC, но мне нужно удалить один элемент от него перед отправкой. <Сильное> Обновление: Я пытаюс...

0  Как ASP.NET MVC создает экземпляры контроллера  ( How does asp net mvc create controller instances ) 
Как ASP.NET MVC создает экземпляры контроллера для запроса? Создает ли он разные экземпляры для разных запросов? Если это так, значит ли это ViewBag не может ...

Связанный проблема

0  Google STASS TOOCOLPOLETE не работает после частичной нагрузки страницы в ASP.NET MVC 
0  Как получить имя страницы вентилятора Facebook в моем приложении в Tab Facebook 
0  Сохранение файла в папке 
0  Как я могу изменить текст кнопки на странице нагрузки 
39  Где я должен делать инъекцию с Ninject 2+ (а как я могу организовать мои модули?) 
0  Обновить OutputsCache на Expire C # MVC 
2  Asp.net с mvc model model в одном представлении (создание, обновление) 
3  XVal и шаблон ViewModel - можно ли сделать? 
0  Как доступом доступа веб-проекта MVC в другой проект MVC API 
67  Отображение изображения из базы данных в ASP MVC 
0  IdentityServer3: Owin Katana Marmware бросает ошибку «Invalid_Client», так как она не может получить токен 
5  Соответствующий жизненный цикл жизненного цикла репозитория W / Ninject в MVC 
0  Передать коллекцию значений к действию, динамически созданные текстовые ящики 
3  Удалить элемент от JsonResult в C # 
0  Как ASP.NET MVC создает экземпляры контроллера 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.