2017-07-25 19 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

谢谢。我们会尝试使用“?”作为即时解决方案,但最终可能会将此部分视图重写为视图组件,以获得额外的功能 - 这应该允许我将目标网址作为参数传递。 –