【发布时间】:2021-09-08 15:48:16
【问题描述】:
这是我关于 SO 的第一个问题,所以这可能是一些基本问题。 我创建了一个按钮,以便通过 ajax 请求触发 Controller 中的方法。 我收到此错误: 消息无法反序列化为 MessageContract 类型 FXM.Ordering.WS.Contract.BoCreateAffiliateRequest,因为它没有默认(无参数)构造函数。
我尝试修改 ajax 请求并重新检查了我的代码的所有部分,但没有解决问题。
我的按钮:
<div class="form-group">
<div>
<input type="button" value="Create" class="btn btn-default" id="create-affiliate-button" />
</div>
</div>
ajax 请求:
<script type="text/javascript">
$(function () {
refreshGroups();
$('#create-affiliate-button').click(function (e) {
console.log("blahblahblah");
var b = $("form").serialize();
console.log("formvalues", b);
$.ajax({
url: "/en/AjaxUI/CreateAffiliate",
type: "GET",
dataType: "json",
data: b,
//error: function (jqXHR, exception) {
// failMessage();
//}
});
});
});
function refreshGroups() {
var pltf = "MT4_LIVE";
var out = $('#MT4Group');
if (pltf != null && pltf !== "") {
$.ajax({
url: '/' + window.currentLangCulture + '/BOLiveForms/GetPlatformGroupByFilter',
data: {
platform: pltf, currency: "", withId : true
},
type: 'GET',
beforeSend: function () {
$('#tpLoader').show();
},
complete: function () {
$('#tpLoader').hide();
},
success: function (data) {
populateDropDown(out, data);
}
});
} else {
out.empty();
out.append($('<option></option>').val('').html(window.defaultSelection));
}
}
我试图在控制器中调用的方法
public JsonResult CreateAffiliate(NewAffiliateViewModel newAffiliateViewModel)
{
try
{
var res = BackOfficeServices.BoAddAffiliateUser(newAffiliateViewModel);
return Json("success");
}
catch (Exception e)
{
throw e;
}
}
我错过了什么? 在哪里/如何添加这个默认(无参数)构造函数?
按照建议添加无参数构造函数后更新。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace FXM.BO.ViewModels
{
public class NewAffiliateViewModel
{
public NewAffiliateViewModel()
{
}
public int Id { get; set; }
public string AffiliateName { get; set; }
public string Email { get; set; }
public int Employee { get; set; }
public int MT4Group { get; set; }
}
}
【问题讨论】:
-
您可能需要走使用依赖注入的路线,或者作为回答,使用默认构造函数来初始化构造函数参数所需的任何内容。没有更多上下文很难知道。
标签: c# asp.net ajax model-view-controller