我正在尝试将我的网页正文发送到一个操作方法,这样我就可以将其保存为字符串,然后将其部分从网站的其他部分呈现。我这样发送:
var input =
{
id : GetGUIDValue(),
html : $("body").html(),
type : 'exposure'
}
$.ajax({
type: "POST",
url: "<%= Url.Action("SaveAnalysis", "Indications") %>",
data: input,
success:function(data)
{
}
});
我抬起头找到了这个并将其添加到我的页面开场陈述中:
ValidateRequest="false"
表示会关闭它,但事实并非如此。这是MVC2中的一个视图,所以也许有另一种方法可以做到这一点?如果没有..我可以将我的页面的主体html发送给动作,这样我就可以将该字符串保存在变量中。
谢谢!
编辑:
行动守则:
public ActionResult SaveAnalysis(Guid? id, string html, string type)
{
IndicationBase indication = CachedTransactionManager<IndicationBase>.GetCachedTransactions(id.Value);
if (type == "Exposure")
{
indication.Model.ExposureExport = html;
}
else if (type == "Prepayment")
{
indication.Model.PrepaymentExport = html;
}
return Json("");
}
答案 0 :(得分:0)
使用[ValidateInput(false)]
答案 1 :(得分:0)
你在.NET 4.0上运行吗?如果是这样,您需要将requestValidationMode设置为2.0。 Rick Strahl在他的博客上有一个good article。基本上,您需要执行以下操作:
在web.config中设置requestValidationMode
:
<httpRuntime requestValidationMode="2.0" />
使用[ValidateInput(false)]
答案 2 :(得分:0)
您需要使用javascript转义请求:
http://www.w3schools.com/jsref/jsref_escape.asp
在C#端,您可以使用HTML Encode / Decode进行存储和重新渲染。问题在于注入攻击,因此只要你允许html以纯文本形式传递,C#就会大喊大叫。当您意识到自己将处理HTML时,应始终对其进行编码,然后再将其发送给控制器。
〜Vulgarbinary
编辑以添加新语法:
var input =
{
id : GetGUIDValue(),
html : escape($("body").html()),
type : 'exposure'
}
$.ajax({
type: "POST",
url: "<%= Url.Action("SaveAnalysis", "Indications") %>",
data: input,
success:function(data)
{
}
});
另一个编辑:
来自: http://kseesharp.blogspot.com/2008/01/c-equivalent-of-javascript-escape.html
Microsoft.JScript.GlobalObject.unescape("KC%27s%20trick%20/Hello")
将取消你的字符串。很抱歉延迟必须深入了解我之前的示例,看看完整的unescape语法是什么。