软件开发框架form表单submit多个按钮提交数据到后台

软件开发框架form表单submit多个按钮提交数据到后台,mvc form表单提交,特性和过滤器应用场景之一。

引言

软件开发框架form多个按钮提交

如上图中有多个按钮,除了刷新外,其他三个按钮都是需要提交表单数据到后台去的,如果我们用MVC传统的form表单提交方式,那么该怎么去做这件事情呢?我们已暂存和保存两个按钮为例给大家讲解。

前端

先看form表单代码:

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    @Html.Partial("_CreateOrEdit", Model)
}

上述代码中,@using (Html.BeginForm())会翻译成html代码:

<form action="/FakeArticle/Create" method="post"><input name="__RequestVerificationToken" 
type="hidden" value="s4w85R-g7tYw1cN9vWIDOkN48L3G-T8iVJwzzLGCjApywm-_E_Dp9GhnUwK4nLM7vSL5emL3HPZcbErRVvHLqyEh-7GcfleDuFXUjV2GgDsPfEVXEjpEqlbHErkuiI3C0" /><
input name="__RequestVerificationToken" type="hidden" value="eAJ_6OWIZ2c71XV2Nln1xM1cMBIbo8KLL55rNDpbeNzkAeApvTjxuo3UVI8Y8sD08kvwZa3lnavHhizk0-yVDy6PNlySei
xuHy6EGfqOhBTo0nwjDA2S-Drn3mxW46360" />

@Html.Partial("_CreateOrEdit", Model)分部视图容器,承载表单项,略去。我们再来看看按钮代码:

    <div class="form-group row">
        <div class="col-md-offset-2 col-md-4">
            <input type="submit" value="暂存" class="btn btn-primary" />
            <input type="submit" name="SaveAs" value="保存" class="btn btn-info" />
        </div>
    </div>

注意:这段代码必须放在form标签中。上述有两个submit,在mvc默认机制中本来只有一个submit可以识别的,软件开发框架中扩展了允许多个submit提交,新加按钮都已name为区分。咱们再看看后台。

后台

软件开发框架后台方法有两个:一个页面名相同的默认的action,一个为扩展提交的按钮action。分别如下:

        /// <summary>
        /// 保存 Post方法 ,同页面名称,默认方法
        /// </summary>
        /// <param name="FakeArticle">需要修改的实体, NamedFormParameter("PreCreate", "PreCreate")</param>
        /// <returns>修改视图</returns>
        [HttpPost]
        [ValidateInput(false)]
        public ActionResult Edit(FakeArticleViewModel fakearticleVM)
        {
               ......
        }
        /// <summary>
        /// 新增的submit提交按钮:NamedFormParameter特性(过滤器)
        /// SaveAs为软件开发框架前端的按钮Name值
        /// </summary>
        /// <param name="FakeArticleViewModel ">从前端待接收的模型数据</param>
        [HttpPost, NamedFormParameter("SaveAs", "saveAs")]
        [ValidateAntiForgeryToken()]
        public ActionResult SaveAs(FakeArticleViewModel fakearticleVM)
        {
                .......
        }

NamedFormParameter特性的过滤器代码:

软件开发框架form表单提交

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace YunMFramework.Web
{
    /// <summary>
    /// 为action方法提供一个标签,用于指示当前请求的表单中是否包含指定了名称的变量。
    /// </summary>
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
    public class NamedFormParameterAttribute : FilterAttribute, IActionFilter
    {
        private readonly string _name;
        private readonly string _actionParameterName;

        public NamedFormParameterAttribute(string name, string actionParameterName)
        {
            this._name = name;
            this._actionParameterName = actionParameterName;
        }

        public void OnActionExecuted(ActionExecutedContext filterContext)
        {
        }

        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var formValue = filterContext.RequestContext.HttpContext.Request.Form[_name];
            filterContext.ActionParameters[_actionParameterName] = !string.IsNullOrEmpty(formValue);
        }
    }
}

最后

最后我们需要为action方法配置权限,权限配置请参见Web开发框架功能权限配置说明


标签: Web开发框架开发指南红宝书

网站&系统开发技术学习交流群:463167176

本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
转载请注明:文章转载自:软件开发框架 » 软件开发框架form表单submit多个按钮提交数据到后台
本文标题:软件开发框架form表单submit多个按钮提交数据到后台
本文地址:https://www.hocode.com/OrgTec/Plugin/0034.html

相关文章: json在快速开发平台中的应用讲解

电话
电话 18718672256

扫一扫
二维码