簡體   English   中英

在MVC中將大數據從視圖發送到控制器

[英]Sending Large data from View to Controller in MVC

我正在獲取表記錄,我需要將其發送到 Controller 以便我可以發送電子郵件。 當我嘗試使用以下代碼時,它拋出錯誤

  var emailList = '';
  $('.checkBoxClass').each(function () {
    if ($(this).is(':checked')) {

        emailList += $(this).val() + ',';
    }
});

body = 'Hi Team'
console.log('emIl ' + emailList);
var baseUrl = ".";
$.ajax({
    type: "GET",
    url: baseUrl + "/Dashboard/GetFinanceSendMail",
    data:  "{'emailList': '" + JSON.stringify(emailList) +  "', body' : '" + body + "' }",
    success: function (json) {
        alert(json);
    }
});

錯誤為:HTTP 錯誤 404.15 - 未找到 請求過濾模塊配置為拒絕查詢字符串過長的請求。

最可能的原因: 請求過濾在 Web 服務器上配置為拒絕請求,因為查詢字符串太長。

我試圖添加以下代碼,仍然是同樣的錯誤

var formData = new FormData();
var objArr = [];

objArr.push({ "emIl": emailList, });

//JSON obj
formData.append('objArr', JSON.stringify(objArr))


body = 'Hi Team'
console.log('emIl ' + emailList);
var baseUrl = ".";
$.ajax({
    type: "POST",
    url: baseUrl + "/Dashboard/GetFinanceSendMail",
    processData: false,
    contentType: false,
    data: formData,

這是控制器代碼

    [HttpGet]
    public JsonResult GetFinanceSendMail(string emailList, string body)
    {
        List<string> emails = emailList.Split(',').ToList();
        // Send Email add optiona arg to the method
        _openPobl.TriggerFinanceEmail(body, emails);
        return Json(emails, JsonRequestBehavior.AllowGet);
    }

修復動作,刪除 [get]

 
 Route[("~/Dashboard/GetFinanceSendMail")]
    public JsonResult GetFinanceSendMail(string emailList, string body)

和阿賈克斯

var emailList = '';
  $('.checkBoxClass').each(function () {
    if ($(this).is(':checked')) {

        emailList += $(this).val() + ',';
    }
});

var body = 'Hi Team';

$.ajax({
    type: "POST",
    url:  "/Dashboard/GetFinanceSendMail",
    data:  {emailList: emailList, body :  body  },
    success: function (json) {
        alert(json);
    }
});

但是如果你想使用更可靠的 post 來創建一個視圖模型類

public class ViewModel
{
public string EmailList {get;set;}
public string Body {get;set;}
}

行動

   Route[("~/Dashboard/GetFinanceSendMail")]
   public JsonResult GetFinanceSendMail(ViewModel model)
.....

和阿賈克斯

$.ajax({
    type: "POST",
    url:  "/Dashboard/GetFinanceSendMail",
    data:  { model: {emailList: emailList, body :  body } },
    success: function (json) {
        alert(json);
    }
});

暫無
暫無

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

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