我有一个过滤器,用于获取当前请求路径。在某些情况下,我使用了
<List id="list" growing="true" growingThreshold="20" growingScrollToLoad="true" showNoData="true" mode="{device>/listMode}"
select="_handleSelect">
<ObjectListItem id="MAIN_LIST_ITEM" type="{device>/listItemType}" press="_handleItemPress" title="{sName}">
<markers>
<ObjectMarker type="Flagged"/>
</markers>
<firstStatus>
<ObjectStatus text="{Status1Txt}"/>
</firstStatus>
<attributes>
<ObjectAttribute id="ATTR1" text="{SNumber}"/>
<ObjectAttribute id="ATTR2" text="{PTxt}"/>
</attributes>
<secondStatus>
<ObjectStatus text="{Status2Txt}"/>
</secondStatus>
</ObjectListItem>
</List>
通常window.location.href =@Url.Action("Action","Controller").
返回HttpContext.Current.Request.Path
,但是对于Controller/Action
,它总是返回window.location.href
。我可以使用"/"
以外的其他地址进行重定向,以便检索正确的路径吗?
答案 0 :(得分:0)
window.location.href
需要一个JavaScript字符串,但是您的代码会呈现无效的JS,因为Url.Action(...)
生成的URL既不包含撇号也不包括引号。
正确的代码应该是
window.location.href = '@Url.Action("Action","Controller")';
但是,我推荐HttpUtility.JavaScriptStringEncode作为完全故障安全的解决方案:
window.location.href = @HttpUtility.JavaScriptStringEncode(Url.Action("Action","Controller"), addDoubleQuotes: true);