Razor中的String属性作为onclick确认的一部分

时间:2015-03-26 20:06:28

标签: javascript asp.net-mvc razor onclick url.action

在调用Url.Action中指定的操作之前,我需要一个确认窗口。我的代码是:

<a href="@Url.Action("Delete", "OriginalWorks", new {id = w.Id})" 
onclick="return confirm('Do you... '+ @w.Title + '?')"><span></span></a>

其中w是OriginalWork类的实例。如果我查看网站的HTML,确认中有正确的字符串值,但窗口不显示,并立即调用操作。如果使用int属性执行相同操作,例如Id

<a href="@Url.Action("Delete", "OriginalWorks", new {id = w.Id})" 
onclick="return confirm('Do you... '+ @w.Id + '?')"><span></span></a>

它按预期工作,在确认窗口中显示一条值为Id的消息。

我试过了Title.toString(),但没有用。我认为它适用于Html.ActionLink,但由于span元素中的a,我想使用此功能。

有什么想法吗?非常感谢。

2 个答案:

答案 0 :(得分:0)

尝试使用HttpUtility.HtmlEncode为你的w.Title避免可以破解javascript的转义字符

答案 1 :(得分:0)

感谢您的帮助。现在解决了,我没有意识到w.Title值被评估为变量(并且JavaScript可能试图找到一个名为Title值的变量),而不是字符串值。它的工作原理如下:

<a href="@Url.Action("Delete", "OriginalWorks", new {id = w.Id})" 
onclick="return confirm('Do you... @w.Title?')"><span></span></a>

所以Title有一个预期的字符串值。