首页 新闻 搜索 专区 学院

.net core ,mvc5表单method疑问

0
悬赏园豆:5 [已解决问题] 解决于 2018-06-05 10:16

    <form asp-action="Delete">
        <input type="hidden" asp-for="ID" />
        <input type="submit" value="Delete" class="btn btn-default" /> |
        <a asp-action="Index">Back to List</a>
    </form>

以上调用的方式寻找的是   控制器的 delete(post) 方法,而且用查看脚本会看到html会自动补全为post

 

而下面:

<a asp-action="Delete" asp-route-id="@item.ID">Delete</a>

以上调用的方式寻找的是   控制器的 delete(get) 方法

mvc是如何决定的 同样都是 asp-action="Delete",都没指名method?

以上是在学习.net core中遇到的疑问,网址:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-mvc-app/details?view=aspnetcore-2.1

陈chenchenhehehehe的主页 陈chenchenhehehehe | 初学一级 | 园豆:42
提问于:2018-06-04 16:56
< >
分享
最佳答案
0

从 asp.net core mvc 的源代码中可以找到线索,对于asp-action对应的实现代码是FormTagHelper.cs,在其Process()方法中调用Generator.GeneratePageForm()方法时给method参数传的值是null,对应的实现DefaultHtmlGenerator.csGenerateFormCore方法中有下面的代码:

if (string.IsNullOrEmpty(method))
{
    // Occurs only when called from a tag helper.
    method = "post";
}
收获园豆:5
dudu | 高人七级 |园豆:36359 | 2018-06-05 10:04

感谢,我也去看看源码了

陈chenchenhehehehe | 园豆:42 (初学一级) | 2018-06-05 10:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册