环境:Visual Studio 2012,MVC4,Razor,Internet Application。
我在“查看”页面中有一个带搜索表单的代码...
@using (Html.BeginForm("SearchResult", "Home", FormMethod.Get))
{
@Html.ValidationSummary(false)
<fieldset>
<legend>Contact Search</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<p>
<input name="SearchButton" type="submit" value="Search" /></p>
</fieldset>
}
然后我使用“@ Model.Name”将“model.Name”字符串直接发送到JavaScript代码。
问题是......当我在搜索表单中键入一个引号(“)符号...例如......(10”android)我遇到了问题。 JavaScript在某处停止工作。如何检查控制器内的“model.Name”字符串是否包含(“)并更改为JavaScript?
我的JavaScript代码... url += "&keywords=@Model.Name";
如果“model.Name”是... 10“android ...它会正常工作吗?
答案 0 :(得分:1)
对于Javascript,我会使用“escape”进行编码,但最佳做法是将“(double)引号替换为XML表示"
至于服务器端,我使用Microsoft的Web Protection Library来处理该部分, http://wpl.codeplex.com/
Microsoft.Security.Application.Encoder.HtmlEncode(HttpUtility.HtmlDecode(DR [ “消息”]。的ToString()))