[英]Razor @Url.Action returns with the optional id parameter to a javascript variable
如果用戶當前在控制器和參數引用的操作中,是否打算@ Url.Action方法返回當前url?
我有一個簡單的控制器設置。
OrderableTest/Details/Id
ResultableTest/Details/Id
如果我從家庭控制器(Home/Index)
或Resultable/Details
調用@Url.Action("Details", "Orderable")
,我會將正確的URL保存到javascript變量("/Orderable/Details")
。 但是,如果我在“詳細信息”頁面上,則ID將包含在網址中。 例如,我在@Url.Action("Details", "Orderable")
Orderable/Details/12345
頁面上,我調用@Url.Action("Details", "Orderable")
,而不是獲得"/Orderable/Details"
我得到"/Orderable/Details/12345"
。 這是預期的功能嗎?
路由映射是默認的。
Javascript按要求:
var orderableDetailUrl = '@Url.Action("Details", "Orderable")';
var resultableDetailUrl = '@Url.Action("Details", "Resultable")';
alert(orderableDetailUrl);
alert(resultableDetailUrl);
正如@JotaBe在上面的評論中所提到的,UrlHelper使用上下文信息。 因此,調用您當前所在頁面的@ Url.Action還將包含可選的id /參數。
要解決此問題,您可以將空白的可選參數傳遞給方法。 對於我上面的問題,它使用以下代碼解決
var resultableDetailUrl = '@Url.Action("Details", "Resultable", new { id = "" })';
var orderableDetailUrl = '@Url.Action("Details", "Orderable", new { id = "" })';
兩者都將正確返回/可訂購/詳細信息/和/可結果/詳細信息/無論用戶當前在哪個頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.