将两个参数传递给控制器​​,语法错误

时间:2017-08-07 17:08:23

标签: asp.net-mvc razor

我有一个下拉列表。我想点击任何项目,然后通过参数重定向视图。

$(document).ready(function () {
        $("#Languages").change(function () {
            var selectedValue = $(this).find('option:selected').val();
              window.location.href = "/Survey/SelectLanguage/" + selectedValue+"/id/"+@Model.CampaignGuid;

        });
    });

控制器中的操作方法是:

 public ActionResult SelectLanguage(string languageName, Guid id)
    {
    }

但是我在chrome调试器中发现了一个错误。

Uncaught SyntaxError: Invalid or unexpected token

如果我将其注释掉代码window.location.href = "/Survey/SelectLanguage/" + selectedValue+"/id/"+@Model.CampaignGuid;

然后错误就消失了。那有什么不对?

3 个答案:

答案 0 :(得分:0)

好吧,既然您没有定义url并且您使用的是默认路由,则默认基于查询字符串。试试这个:

$(document).ready(function () {
        $("#Languages").change(function () {
            var selectedValue = $(this).find('option:selected').val();
              window.location.href = "/Survey/SelectLanguage/@Model.CampaignGuid?languageName=" + selectedValue;
        });
    });

通过遵循asp.net mvc的默认路由,你可以在url上传递名为id的参数作为其一部分,然后你可以使用CampingGuid作为id,{{1}你可以使用查询字符串。

答案 1 :(得分:0)

更改

window.location.href = "/Survey/SelectLanguage/" +
    selectedValue + "/id/" + @Model.CampaignGuid;

window.location.href = "/Survey/SelectLanguage/" + 
    selectedValue + "/id/@Model.CampaignGuid";

如果CampaignGuid真的是Guid,那么你就是在你的html中写了"/id/" + d0164584-bac0-485b-8a84-b7923caa6ee7,Chrome的javascript引擎不知道d0164584-bac0-485b-8a84-b7923caa6ee7是什么,它需要成为一个字符串。

答案 2 :(得分:0)

尝试将您的网址定义为 "/Survey/SelectLanguage?selectedValue=" + selectedValue + "&id=@Model.CampaignGuid"