2015-10-16 64 views
0

我有一个写在我的控制器中的方法。我将值作为查询字符串传递给此控制器。示例URL到控制器的方法是:无法获取查询字符串参数的值

了window.location =“http://www.myapplication.org/Session/Enter?legacySessionId=fjD0pMTFTPFf6MgJZT0&RedirectPath=/Folio/OfflineDocument/EnqueueDocumentGenerationRequest/?FolderId=acf7egfsc0clz6ei&CourseId=vhvgyhgvhgvyy7yty

我的控制器方法如下定义:

[AcceptVerbs(HttpVerbs.Get)] 
     public ActionResult Enter(
      string legacySessionId, 
      string RedirectPath, 
      string siteSubdomain = "", 
      bool isDuplicate = false, 
      int id = 0 
     ) 

这里面控制器的方法时,我得到了RedirectPath查询字符串值它只是给出了:

RedirectPath="/Folio/OfflineDocument/EnqueueDocumentGenerationRequest/?FolderId=acf7egfsc0clz6ei" 

鉴于预期的结果是:

RedirectPath="/Folio/OfflineDocument/EnqueueDocumentGenerationRequest/?FolderId=acf7egfsc0clz6ei&CourseId=vhvgyhgvhgvyy7yty" 

缺少“CourseId”部分。有人能指出这个问题吗?

回答

1

你必须编码符号字符:

& ==> & 

为了将是:

window.location = "http://www.myapplication.org/Session/Enter?legacySessionId=fjD0pMTFTPFf6MgJZT0&RedirectPath=/Folio/OfflineDocument/EnqueueDocumentGenerationRequest/?FolderId=acf7egfsc0clz6ei&CourseId=vhvgyhgvhgvyy7yty"

&是在网址参数的分隔符。如果这个char是值的一部分,它必须被编码。

1

您需要在参数中跳过&符号。只需编码该参数值。

window.location = "http://localhost:13203/Home/Enter?legacySessionId=fjD0pMTFTPFf6MgJZT0&RedirectPath=" 
        + encodeURIComponent("/Folio/OfflineDocument/EnqueueDocumentGenerationRequest/?FolderId=acf7egfsc0clz6ei&CourseId=vhvgyhgvhgvyy7yty");