我正在使用VB.Net和MVC 5.我有一个用javaScript创建的对象,如下所示:
var myEdits = {
listOfIDs: [],
listOfValues : []
};
我需要将此对象发送到我的控制器,然后使用其中包含的信息转到下一个视图。
我可以成功地对对象进行字符串化并通过ajax将其传递给控制器,并操纵数据,但这不允许我在成功时呈现新视图。
我尝试使用window.location
和endodeURIComponent
,如下所示:
myEdits = encodeURIComponent(JSON.stringify(myEdits));
var postString = ("/ViewDetails/EditConfirmation/" + myEdits);
window.location = postString;
但我仍然收到这个错误:
从客户端(:)检测到潜在危险的Request.Path值。
我觉得奇怪,因为我看不到任何:请求中的:
EditConfirmation /%7B “listOfIDs” %3A%5B “22” %2C “23” %2C “24” %2C “25” %2C “26” %2C “27” %2C “28” %2C” 29 “%2C” 30 “%2C” 31 “%2C” 32 “%2C” 33 “%2C” 34 “%2C” 35 “%2C” 36 “%5D%2C” listOfValues “%3A%5B”” %2C “” %2C “” %2C “” %2C “” %2C “” %2C “” %2C “” %2C “” %2C “” %2C “是” %2C “是” %2C“是“%2C” 是 “%2C” 否“%5D%7D
通过javaScript或jQuery将此对象传递给控制器的正确方法是什么,让服务器呈现新视图?
答案 0 :(得分:1)
它正在进行URL编码,因为您正在使用HTTP GET。如果你发送了很多这样的信息,你可能想要使用HTTP POST。请参阅jQuery的$ .ajax方法。
如果您真的想继续使用GET,请放心,如果您的操作采用字符串参数,它将与冒号一起按预期进行。 :
已编码为%3A
(请参阅:http://www.w3schools.com/tags/ref_urlencode.asp了解所有这些内容)。
答案 1 :(得分:0)
我通过将JSON字符串放入带有AJAX调用的会话变量中,然后使用window.location
调用{{1}}上正确视图的操作来解决此问题。然后,当调用“成功”操作为视图设置我的模型时,我从会话中检索字符串。
答案 2 :(得分:0)
可能是由于尝试将url路径'/ViewDetails/EditConfirmation/' + myEdits
注入浏览器而出现了危险的请求问题。
模型类
public class myEdits
{
public List<int> listOfIds {get;set;}
public List<string> listOfValues {get;set;}
}
Javascript Part(假设是jQuery) - 发送yor myEdits对象
$.ajax({
type: "POST",
url: 'Home/MyMethod',
data: myEdits,
success: success,
dataType: dataType
});
<强>的HomeController 强>
public void MyMethod(myEdits edits)
{
return View("/ViewDetails/EditConfirmation/", edits);
}