2
我創建了一個接觸器與簽名:asp.net核心和ASP路由-ID
public IActionResult Index(string id)
沒有在路由表中看中:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
在我家認爲,我試圖創建一個鏈接到聯繫人/索引:
<a asp-controller="Contact" asp-route-id="3255">Contact me</a>
生成的鏈接看起來很好,並進行正確的操作。 帶或不帶asp的動作,生成的鏈接是:
<a href="/Contact/Index/3255">Contact me</a>
但ID沒有設定。 但是當我複製鏈接並執行「粘貼並轉到」時,將設置id參數。 它也適用於如果我查看頁面源並單擊生成的鏈接。 當我點擊頁面上的鏈接時,它不起作用。
你能告訴我有什麼問題嗎?
但我們有默認操作:指數? – Alexan
您的默認操作**不是可選**。它只會在你打電話給/聯繫人時設置,而不是在你/ Concact/1時設置,因爲現在第二個參數將被視爲操作。並沒有稱爲「1」的行爲。但是你的路線告訴它從** 3rd **參數中獲取id。不要混淆**可選**和**默認值** – Tseng
@isthat:如果你的id有一個約束(即guid,int),你可以使用'routes.MapRoute(name:「noAction」,template:「{控制器=主頁}/{id:int}「,默認值:{action:」Index「});',但字符串id不起作用,因爲它也會匹配/ Contact/Edit,你會得到」Edit 「作爲id代替。 – Tseng