Member 11019366 Ответов: 4

Как передать пробел в качестве параметра


у меня есть следующая модель

public class Store
{
   public string StoreName {get; set;}
   public string Price {get;set;}
   public string PriceSeparator {get; set;}
   public string Currency {get;set;}
}


var storeModel = new Store();


storeModel заполняется из окна wpf текстовыми полями;

и у меня есть следующий звонок

WcfService serviceClient = new WcfServiceClient();
serviceClient.SaveStoreModel(storeModel);


в момент звонка у меня есть телефон.
storeModel.PriceSeparator = " ";


при отладке службы Wcf у меня есть
storeModel.PriceSeparator = "";


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

Большое спасибо!

Что я уже пробовал:

Это то, что я пробовал
public class Store
{
   public string StoreName {get; set;}
   public string Price {get;set;}
   [Required(AllowEmptyStrings = true)
   public string PriceSeparator {get; set;}
   public string Currency {get;set;}
}

Rob Philpott

Хорошо, фильтруя то, что вы говорите, Я предполагаю, что WPF не имеет значения, пробелы теряются во время вызова WCF?

Какую привязку вы используете?

Member 11019366

Вы предполагаете, что это правильно, когда веб-сервис между вызовом службы WCF теряется пробел. о каком типе привязки вы говорите в WPF, я не использую никакого ожидания.

Я порылся в сети и нашел вот это https://social.msdn.microsoft.com/Forums/vstudio/en-US/58101c0e-5c9b-43fd-8acb-becfd0d3e486/strings-stripped-of-leading-whitespace-when-using-mtom-message-encoding?forum=wcf по - видимому, это ошибка. я собираюсь попробовать обойти это

F-ES Sitecore

Вместо этого вы можете отправить маркер типа; "[пробел]" и в своем сервисном методе сделать строку.Замените и преобразуйте [пробел] обратно в " "

Wonde Tadesse

Почему вы хотите использовать MTOM. Использование базовой привязки http достаточно для этого случая.

Afzaal Ahmad Zeeshan

В противном случае отправьте значение символа для пробела.

4 Ответов

Рейтинг:
35

NextGenDeveloper

Эта проблема была введена еще в .NET 4.5, и до сих пор не было четкого исправления; однако вы можете попытаться обойти эту проблему, поставив специальные пробелы.

Например, попробуйте;

storeModel.PriceSeperator = "\u2007";


Или альтернативно, как предлагается, поместив какой-то идентификатор ключевого слова, чтобы определить, является ли это пробелом, и применить его перед выводом.


Рейтинг:
2

zcf-prince

Извините,я не знаю, какое это имеет для вас значение

Я не думаю, что WCF будет фильтровать пробелы

Если действительно как вы говорите
напр.:
storeModel.PriceSeparator =storeModel.PriceSeparator .Replace(""," ");


Рейтинг:
1

Alaa Ben Fatma

Вы могли бы использовать "\t", я думаю, чтобы дать вам символ табуляции. Это могло бы сделать интервал более четким.

storeModel.PriceSeparator = @"\t";


Рейтинг:
0

talbot

Я временно решил ее в контроллер метод, таким образом:

parameterName = Request.Query["parameterName"].FirstOrDefault() as string;
if (parameterName == string.Empty)
    parameterName = null;


Richard Deeming

Это, кажется, не имеет никакого отношения к вопросу, который уже решен.