当我作为参数'&'传递时,我在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 \“:\”“
需要帮助!!!
答案 0 :(得分:0)
当您通过GET方法发送http请求时,浏览器会将&
解释为网址的一部分。
处理此问题的一种方法是使用Server.UrlEncode
对参数进行urlEncode
这也意味着您需要解码控制器中的参数。
另一个解决方案是发布值,使它们不属于网址,但您需要确定这是否合适。
答案 1 :(得分:0)
因为'encodeURIComponent'只能在纯文本中工作,我正在做的是创建一个复合对象很快就行不通。一旦构造了对象,我就必须立即使用'encodeURIComponent'
filter.NomeTrabalhador = encodeURIComponent($('#NomeTrabalhador')。val());