Javascript 从typescript调用中转义url中的特殊字符以到达mvc控制器
我有一个asp.net mvc控制器:Javascript 从typescript调用中转义url中的特殊字符以到达mvc控制器,javascript,asp.net-mvc,typescript,url,escaping,Javascript,Asp.net Mvc,Typescript,Url,Escaping,我有一个asp.net mvc控制器: public class HomeController : Controller { GET("{name:alpha}")] public ActionResult Build(string name) { var model = new MyModel(name) return View("model); } } 以
public class HomeController : Controller
{
GET("{name:alpha}")]
public ActionResult Build(string name)
{
var model = new MyModel(name)
return View("model);
}
}
以及下面的typescript代码,它接受用户输入并通过在末尾添加用户输入来调用上一个控制器:
function callUserInput(userinput)
{
mycall(`./Website/Home/Build/${userinput}`)
}
当用户提供的输入不包含特殊字符时,这种方法工作得很好,例如,如果他提供“myname”,则调用我的构建方法,但如果他提供
一个包含特殊字符(空白,-,u)的输入,比如“我的名字”、“我的名字”、“我的名字”,我的构建方法没有被调用,他得到一个404未找到
我试图像这样转义mycall参数:
mycall(encodeURIComponent(`./Website/Home/Build/${userinput}`))
但是它没有改变什么,我得到了相同的错误escape()
不会编码:@*/+
encodeURI()
将不编码:~@#$&*()=:/,;?+'
encodeURIComponent()
将不编码:~*()'
尝试escape()或encodeURI()
如果它不起作用。然后试试看
encodeURIComponent( `./Website/Home/Build/${userinput} `).replace(/[!'()]/g, escape).replace(/\*/g, "%2A")