MVC中的错误,当我作为参数'&'传递时失败

时间:2018-02-28 10:33:26

标签: javascript html model-view-controller asp.net-core

当我作为参数'&'传递时,我在MVC中有错误没有得到以下。我将如何在这个例子中展示?

public IActionResult Create(int? idTrabalhador, [FromQuery]string GridState{}

视图

var lnk = "@Url.Action("Create" , new { idTrabalhador = "{#KeyTrabalhador}", GridState = "{#GRID_STATE}" })";
    lnk = lnk.replace(encodeURIComponent("{#KeyTrabalhador}"), 0);
    lnk = lnk.replace(encodeURIComponent("{#GRID_STATE}"), JSON.stringify(state));

http://localhost:58185/TrabalhadorPincodes/Create?idTrabalhador=0&GridState={"filter":{"NomeTrabalhador":"nuno","Estado":"0"},"sorter":[],"currentPage":0}

model => GridState =“{\”filter \“:{\”NomeTrabalhador \“:\”nuno \“,\”Estado \“:\”0 \“},\”sorter \“:[],\”currentPage \“ :0}“

完美!!!

BUT

http://localhost:58185/TrabalhadorPincodes/Create?idTrabalhador=0&GridState={"filter":{"NomeTrabalhador":"&","Estado":"0"},"sorter":[],"currentPage":0}

model => GridState =“{\”filter \“:{\”NomeTrabalhador \“:\”“

需要帮助!!!

2 个答案:

答案 0 :(得分:0)

当您通过GET方法发送http请求时,浏览器会将&解释为网址的一部分。

处理此问题的一种方法是使用Server.UrlEncode对参数进行urlEncode 这也意味着您需要解码控制器中的参数。

另一个解决方案是发布值,使它们不属于网址,但您需要确定这是否合适。

答案 1 :(得分:0)

因为'encodeURIComponent'只能在纯文本中工作,我正在做的是创建一个复合对象很快就行不通。一旦构造了对象,我就必须立即使用'encodeURIComponent'

filter.NomeTrabalhador = encodeURIComponent($('#NomeTrabalhador')。val());