2017-07-25 40 views
0

我有一個名爲CasesController控制器又包含下面的方法:Dot net core action =「。」是指控制器,但沒有行動

[HttpGet("Cases/Active")] 
    public IActionResult GetActive() 
    { 
     return View("CaseList", _caseRepository.GetAll()); 
    } 

此外,該CaseList.cshtml文件包含以下形式:

<form class="form" method="get" action="."> 
</form> 

(在現實中,這窗體部分視圖呈現爲CaseList視圖,我想使用來自幾個不同控制器方法的相同部分)。這種形式用於GET返回到帶有一些過濾參數的原始頁面,以限制顯示的記錄數量。

我希望這種形式回發到//Server/Cases/Active?FormField1=&FormField2=相反,方法名被冷落的URL的是,GET發送至://Server/Cases/?FormField1=&FormField2=

我怎樣才能獲得承認的完整路徑瀏覽器回製作該網頁的網址?

+0

爲什麼要使用'.'作爲動作?這是您的瀏覽器解釋URL,這與.Net Core無關。 – DavidG

+0

因爲我想'GET'返回當前URL,它可能會有所不同(在'\ Cases \ Active'和'\ Cases \ Closed'之間取決於哪個視圖呈現了包含表單的部分 –

回答

1

如果您希望網址與您所在的網頁完全相同,但沒有查詢字符串,則不需要使用句點(.),您需要使用問號(?)或將其留空。例如,假設我們有一個頁面上的URL http://www.example.com/path/thing?value=1,則目標的行動將這樣計算:

. => http://www.example.com/path/?form=1 
? => http://www.example.com/path/thing?form=1 

注:這是不是真的很好的任何地方定義。例如,你可能會發現不同的瀏覽器會給你不同的結果。所以不指定動作URL是非常糟糕的做法。

+0

謝謝。我們會嘗試使用「?」作爲即時解決方案,但最終可能會將此部分視圖重寫爲視圖組件,以獲得額外的功能 - 這應該允許我將目標網址作爲參數傳遞。 –