Form 标签助手

Form 标签助手在表单元素中输为action属性,还包括用于请求验证的防伪标记。如果在表单元素中没有指定method属性,标签助手会将其设置为post

Form 标签助手的主要作用是从传递给它的自定义属性参数中生成action属性。因此,如果增加自定义属性,再尝试向 Form 标签助手提供action属性,则会引发异常。

属性 描述
action MVC控制器上的Action方法的名称
all-route-data1 多个路由参数值
antiforgery7 是否输出防伪标记。
area MVC区域的名称
controller MVC控制器的名称
fragment2 URL中的片段
host 主机名
page3 要链接到的 Razor 页面
page-handler4 要调用的Razor页面处理方法
protocol 协议(http,https,ftp等)
route5 路由的名称
route-6 单个路由参数值

笔记

  1. 如果action属性的路径包含多个路由参数,则它们的值可以打包为一个Dictionary<string, string>并传递给all-route-data参数:

    @{   
        var d = new Dictionary<string, string>
            {
               { "key1", "value1" },
               { "key2", "value2" }
            };
    }
    
    <form asp-all-route-data="d">...</form>
    

    如果路由定义了参数,则 Form 标签助手将输出的URL为:<form ction="/Page/value1/value2">...</form>。如果路由没有定义参数,路由参数将作为查询字符串值附加到URL中<form action="/Page?key1=value1&amp;key2=value2">...</form>

  2. 片段是用于标识文档的命名部分的URL中的哈希值或井号()之后的值。上面的“备注”标题的标识值为“notes”,可以使用 Form 标签助手在URL中引用,如下所示:

    <form asp-fragment="notes">...</form>
    

    产生的HTML为:<form action="/Page#notes">...</form>。应该注意的是,片段对表单提交没有作用。

  3. 必须提供链接到 Razor 页面的名称,不包含文件扩展名:

    <form asp-page="page">...</form>
    

    如果没有指定页面名称,则标签助手将生成到当前页面的链接。

  4. 除非目标页面已经定义了路由参数handler,否则处理方法的名称将作为查询字符串。

  5. Razor 页面不支持路由名称,该参数将仅用于MVC路由。

  6. route-参数能够为单个路由值指定值。 连字符(-)后面追加路由参数名称。在这里,路由参数名称是key1
    <form asp-route-key1="value1">...</form>
    如果key1参数被定义为页面路径模板的一部分,输出结果为:
    <form action="/Page/value1">...</form>
    否则为:
    <form action="/Page?key1=value1">...</form>

  7. 防伪标记输出为name属性为__RequestVerificationToken的隐藏域,默认会输出,除非表单指定了action属性、或者表单的提交方式设置为GET或者antiforgerytoken的值设置为false


如果您在查阅过程中,发现内容存在错误,请到我的博客中留言,谢谢,http://www.cnblogs.com/tdfblog/p/learn-razor-pages.html
最后一次更新时间: 2018-02-08 06:31:11