C#字符串格式错误

C#字符串格式错误,c#,C#,我需要通过此链接发送从模型收到的值,proposalName字段必须在引号中。我如何才能做到这一点 这是我的服务url string path = string.Format("{ProposalId:{proposalId},ProposalName:{"proposalName"},VendorId:{vendorId}}", Uri.EscapeDataString(proposalId.ToString()), Uri.E

我需要通过此链接发送从模型收到的值,proposalName字段必须在引号中。我如何才能做到这一点

这是我的服务url

   string path = string.Format("{ProposalId:{proposalId},ProposalName:{"proposalName"},VendorId:{vendorId}}",
               Uri.EscapeDataString(proposalId.ToString()),
               Uri.EscapeDataString(proposalName),
               Uri.EscapeDataString(vendorId.ToString()));

你的问题完全在
{“1”}
部分。双引号
应该在
{}
的外部,而不是内部。 这是固定代码

string path = string.Format("{{0},ProposalName:\"{1}\",VendorId:{2}}",
               Uri.EscapeDataString(proposalId.ToString()),
               Uri.EscapeDataString(proposalName),
               Uri.EscapeDataString(vendorId.ToString()));

如果您使用的是C#6,那么您可以编写如下代码

string path = $"{Uri.EscapeDataString(proposalId.ToString())},ProposalName:\"{Uri.EscapeDataString(proposalName)}\",VendorId:{Uri.EscapeDataString(vendorId.ToString())}";

你的问题完全在
{“1”}
部分。双引号
应该在
{}
的外部,而不是内部。 这是固定代码

string path = string.Format("{{0},ProposalName:\"{1}\",VendorId:{2}}",
               Uri.EscapeDataString(proposalId.ToString()),
               Uri.EscapeDataString(proposalName),
               Uri.EscapeDataString(vendorId.ToString()));

如果您使用的是C#6,那么您可以编写如下代码

string path = $"{Uri.EscapeDataString(proposalId.ToString())},ProposalName:\"{Uri.EscapeDataString(proposalName)}\",VendorId:{Uri.EscapeDataString(vendorId.ToString())}";

这可能对你有用

\"{1}\"
而不是

{"1"}
因为您可以将
\
符号表示转义序列,后跟保留字符

所以


这可能对你有用

\"{1}\"
而不是

{"1"}
因为您可以将
\
符号表示转义序列,后跟保留字符

所以


您可以通过转义引号来简单地放置引号,如下所示-

string path = string.Format("{{0},ProposalName:\"{1}\",VendorId:{2}}",
                   Uri.EscapeDataString(proposalId.ToString()),
                   Uri.EscapeDataString(proposalName),
                   Uri.EscapeDataString(vendorId.ToString()));
根据您更新的问题,如果您需要在URL中传递双引号,则需要将其编码为%22

您还可以使用
URI
,这使得url具有很大的灵活性。例如—

Uri myUri = new Uri("http://google.com/search?hl=en&q=\"query with quotes\"");
继续您的示例-将
EscapeDataString
替换为
Uri.escapeUristing
。它将转义chracter以形成有效的URL<代码>“将被
%22


一些建议和-

您可以通过转义引号将引号括起来,如下所示-

string path = string.Format("{{0},ProposalName:\"{1}\",VendorId:{2}}",
                   Uri.EscapeDataString(proposalId.ToString()),
                   Uri.EscapeDataString(proposalName),
                   Uri.EscapeDataString(vendorId.ToString()));
根据您更新的问题,如果您需要在URL中传递双引号,则需要将其编码为%22

您还可以使用
URI
,这使得URL具有很大的灵活性。例如-

Uri myUri = new Uri("http://google.com/search?hl=en&q=\"query with quotes\"");
继续您的示例-将
EscapeDataString
替换为
Uri.escapeUristing
。它将转义chracter以形成有效的URL。
将被
%22
替换


一些建议和-

我认为避开引号并将其放在括号外会起作用:

"{{0},ProposalName:\"{1}\",VendorId:{2}}"
根据C#版本的不同,您也可以这样做,我通常认为这是一种更简单、更干净的方法:

 string path = $"{proposalId},ProposalName:\"{proposalName}\",VendorId:{vendorId}";

我认为避开引号并将其放在括号外会起作用:

"{{0},ProposalName:\"{1}\",VendorId:{2}}"
根据C#版本的不同,您也可以这样做,我通常认为这是一种更简单、更干净的方法:

 string path = $"{proposalId},ProposalName:\"{proposalName}\",VendorId:{vendorId}";
你有两个问题:

  • 错误的引号(应在大括号
    {…}
    之外并转义)
  • 不正确的
    {
    }
    转义:
    {{
    表示格式字符串中只有一个
    {
应该是

string path = string.Format("{{{0},ProposalName:\"{1}\",VendorId:{2}}}",
请注意

  • {1}
  • 三倍大括号
    {{{
    }}
编辑:在编辑的问题中,您有相同的错误:

string format = 
  "http://mobile.teklifdosyam.com/VendorReport/GetListProposalService?&page=1&start=0&limit=10&filter=" + 
   "{{ProposalId:{0},ProposalName:\"{1}\",VendorId:{2}}}";

string path = string.Format(format,
  Uri.EscapeDataString(proposalId.ToString()),
  Uri.EscapeDataString(proposalName),
  Uri.EscapeDataString(vendorId.ToString()));
请注意转义的引号
\“
{1}
之外,双引号
{{{{code>和三引号
}}}
。格式化时必须使用数字作为占位符:因此
{“proposalName”}
必须更改为
{0}
您有两个问题:

  • 错误的引号(应在大括号
    {…}
    之外并转义)
  • 不正确的
    {
    }
    转义:
    {{
    表示格式字符串中只有一个
    {
应该是

string path = string.Format("{{{0},ProposalName:\"{1}\",VendorId:{2}}}",
请注意

  • {1}
  • 三倍大括号
    {{{
    }}
编辑:在编辑的问题中,您有相同的错误:

string format = 
  "http://mobile.teklifdosyam.com/VendorReport/GetListProposalService?&page=1&start=0&limit=10&filter=" + 
   "{{ProposalId:{0},ProposalName:\"{1}\",VendorId:{2}}}";

string path = string.Format(format,
  Uri.EscapeDataString(proposalId.ToString()),
  Uri.EscapeDataString(proposalName),
  Uri.EscapeDataString(vendorId.ToString()));

请注意转义的引号
\“
{1}
之外,双引号
{{{{{code>和三引号
}}}
。格式化时必须使用数字作为占位符:因此
{“proposalName”}
必须更改为
{0}

@ozmert75-为您的更新问题编辑了我的答案。@ozmert75-为您的更新问题编辑了我的答案。