使用angular将表单发布到ASP.NET MVC ActionMethod

Use angular to post form to ASP.NET MVC ActionMethod

本文关键字:ASP NET MVC ActionMethod angular 表单 使用      更新时间:2023-09-26

我正在尝试使用angularjs将ASP.NET MVC表单自动发布回服务器。当一个字段达到特定的字符数并得到验证时,表单将自动发回我创建的ActionResult方法。

问题:是否可以将表格邮寄到具有角度的接收方法,并在验证后自动发送表格?我可以使用MVC助手进行验证吗。

@model model.example
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <div class="form-horizontal" ng-app="receiveApp" data-ng-submit="sendForm()" , data-ng-controller="breakDownController">
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Id, new { @class = "control-label col-xs-12 col-sm-2" })
            <div class="col-sm-10">
                @Html.EditorFor(model => model.PId, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Id, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.Uid, new { @class = "control-label col-xs-12 col-sm-2" })
            <div class="col-sm-10">
                @Html.EditorFor(model => model.Uid, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Uid, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.LId, new { @class = "control-label col-xs-12 col-sm-2" })
            <div class="col-sm-10">
                @Html.EditorFor(model => model.LId, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.LId, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <input type="submit" value=@Resources.Receive class="btn btn-default" />
                @Html.ActionLink(Resources.ClearButton, "Receive", null, new { @class = "btn btn-default" })
            </div>
        </div>
    </div>
}

Javascript

var App = angular.module('App', []);
    App.controller('testController', ['$scope', '$http', function ($scope, $http) {
        $scope.model = {};

        $scope.sendForm = function () {
            $http({
                method: 'POST',
                url: '@Url.Action("Receive")',
                data: $scope.model
            }).success(function(data,status,headers,config){
            }).error(function(data,status,headers,config){
            });
        };
    }]);

我认为这将有助于

angular.module('formExample', [])
  .controller('FormController', ['$scope',
    function($scope) {
      $scope.userType = 'samo';
      $scope.email = "samo@gmail.com"
      $scope.$watch(function() {
        if ($scope.myForm.$valid) {
          submitted()
        }
      });
      function submitted() {
        console.log("Form submited");
      }
    }
  ]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example</title>
</head>
<body ng-app="formExample">
  <form name="myForm" ng-controller="FormController" class="my-form">
    userType:
    <input name="input" ng-model="userType" required>
    <input type="email" ng-model="email" required>
    <span class="error" ng-show="myForm.input.$error.required">Required!</span>
    <br>
  </form>
</body>
</html>