点网核心行动="。"是指控制器而不是行动

时间:2017-07-25 21:32:37

标签: http asp.net-core

我有一个名为CasesController的控制器,它又包含以下方法:

    [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=而是将方法名称排除在GET发送到的网址之外://Server/Cases/?FormField1=&FormField2=

如何让浏览器识别返回生成页面的URL的完整路径?

1 个答案:

答案 0 :(得分:1)

如果您希望网址与您所在的网页完全相同但没有查询字符串,则需要使用问号(.)代替句点(?)或留空。例如,假设我们位于包含网址http://www.example.com/path/thing?value=1的网页上,则目标操作将按如下方式计算:

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

注意:这在任何地方都没有很好地定义。例如,您可能会发现不同的浏览器会给您不同的结果。因此,不指定操作URL是非常糟糕的做法。