我謹提的是,我已經閱讀了問題傳遞URL參數在JavaScript
Passing dynamic javascript values using Url.action()
和
How to pass parameters from @Url.Action to controller
對於具有清潔,開始我的問題代碼和具有打開模式窗口與url作爲爭論的JavaScript函數,我不喜歡在我的JavaScript文件中使用Razor。出於這個原因,我將我所有的Url動作設置在我的.cshtml頁面的PageScripts中,並且在我的函數中使用了這些變量。
@section PageScripts {
// render necessairy scripts
<script type="text/javascript">
view.params = {
exampleUrl: "@Url.Action("ExampleAction", "ExampleController", new { parameter1Id = "pr1Id", parameter2Id = "pr2Id", parameter3Id = "pr3Id" })",
// More url actions and page module parameters
}
};
</script>
}
這樣的url操作用於模態窗口我必須從選定的行打開,我必須使用許多參數。我在JavaScript函數中使用它們的方法是這樣的
var uri = params.exampleUrl.replace('pr1Id', actualParameter1Id).replace('pr2Id', actualParameter2Id).replace('pr3Id', actualParameter3Id);
我控制器是喜歡這樣
public ActionResult ExampleAction(string parameter1Id, string parameter2Id, string parameter3Id){
// do stuff and return View...
}
我的問題是,當我通過一個參數我控制器獲取的值正確。當我通過多個參數時,雖然我從調試中看到uri參數已更改並採用了新參數,但在我的控制器中只有第一個參數正確。其他變量即將爲空。
例子:
addCandidateTaskUrl: "@Url.Action("Action", "Controller", new { candidacyId = "cId", candidateId = "cndId", typeOfAction = "tpA" })"
烏里從PARAMS
"/ApplicationName/Controller/Action?candidacyId=cId&candidateId=cnId&typeOfAction=tpA"
烏里替換值
後"/ApplicationName/Controller/Action?candidacyId=97c89ac6-3571-48a1-a904-d4b3f2594d9b&candidateId=a05amn84-33a1-4fcb-8c89-e44635d67d63&typeOfAction=COMPLETED"
我們可以看到調用'params.exampleUrl('後生成的鏈接? – GGO
這是一個錯誤?你在這裏錯過了'replace':'params.exampleUrl('pr1Id',actualParameter1Id)' – adiga
'uri'返回的URL是什麼?您並未分別提供「actualParameter1Id」,「actualParameter2Id」和「actualParameter3Id」內容(請參閱http:// idownvotedbeau。SE/beingunresponsive)。 –