簡體   English   中英

如何處理來自復雜 Angular.js Web 表單的提交數據

[英]How to process submit data from complex Angular.js web form

我的 Web 表單(使用 Bootstrap 3 和 Angular.js 1.3 構建)冗長且動態。 換句話說,有一些表格排列的輸入字段和其他帶有關聯“添加另一個”按鈕的常規輸入字段的情況,以及一些根據前面字段中的輸入或選擇切換(隱藏/顯示)的輸入字段. 在控制器 JS 中,我在范圍內設置了一個對象來保存所有表單數據,如下所示:

// Angular.js controller function
$scope.formData = {};

在表單的 HTML 中,我使用ng-model支持所有字段,如下所示:

<html data-ng-app="formApp">
  <body>
    <form class="form form-horizontal" data-ng-controller="formController">
      <div class="form-group">
        <label class="control-label" for="username">Username</label>
        <input type="text" name="username" data-ng-model="formData.username" class="form-control" data-ng-minlength="3" data-ng-maxlength="8" required>
      </div>
    </form>
  </body>
</html>

因此,在填寫表單時, $scope.formData將具有以下結構:

$scope.formData =>

  { "username": "jdoe",
    "roles": [
      "Employee", "Lead Engineer", "Coordinator"
    ],
    "location": "Palo Alo, CA",
    "and so": "on..."
  }

我想使用$http將數據異步發布到 ASP.NET 通用 HTTP 處理程序,它將處理表單提交並以 JSON 格式響應。 發布數據的推薦方法是什么? 當我使用JSON.parse($scope.formData) ,對象被分解為單獨的請求參數,而不是作為單個對象提交。 如果我確實將對象作為單個對象進行處理,我該如何處理表單提交的數據? 理想情況下,我想將整個formData對象轉換為我可以在服務器端使用的 C# DTO 對象。

首先,您可以使用 post 方法使用 $http() 提交您的 $scope.formData,然后在服務器端,您可以使用 Newtonsoft https://www.nuget.org/packages/Newtonsoft反序列化您的請求數據。 JSON/

也許做這樣的事情

fromData =  JSON.stringify($scope.formData)

$http.post('/someUrl', {fromData:  fromData})
.success(function(data, status, headers, config) {
// this callback will be called asynchronously
// when the response is available
}).
error(function(data, status, headers, config) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});

服務器將是這樣的

public HttpResponseMessage Post(string jsonstring)
{
     GenerForm frm = JsonConvert.DeserializeObject<GenerForm>(json);
     string username = frm.username;      
}

// 你需要定義類

class GenerForm {
    string username {get;set;};
    List<string> roles {get; set;};
    List<string> location {get; set;};
    // and so on
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM