gpt4 book ai didi

javascript - C# MVC 发布模型和从 js 到 Controller 的附加数据

转载 作者:太空狗 更新时间:2023-10-30 01:33:17 25 4
gpt4 key购买 nike

我正在使用自己创建的自定义工作流解决方案。我想创建一个具有模型的回发,以及代表我已完成的操作和步骤的两个整数值。我不想将它们添加到模型中,因为它们只用在这个地方。此回发的签名如下所示。

[HttpPost]
public void ProcessWorkflowAction(EditScreenModelValidation model, int stepActionId, int stepNumber)
{
//Some work on model and actions
}

我真的很想通过 JS 执行此操作,因为目前我就是通过它获取 StepActionId 和 StepId。有没有办法把模型打包通过JS发送?

 var modelObj = CreateModelData();
var postObj = JSON.stringify(modelObj);
$.ajax({
type: "POST",
traditional: true,
dataType: "json",
url: "url",
data: { model: modelObj, stepActionId: stepId, stepNumber: 3 }
cache: false,
complete: function (data) {
}});

CreateModelData = function () {
var modelObj = {};
var modelArray = $('#frm').serializeArray()
$.each(modelArray, function (index, value) {
assign(modelObj, value.name, value.value);
})

return modelObj;
};

function assign(obj, prop, value) {
if (prop != undefined) {
if (typeof prop === "string")
prop = prop.split(".");

if (prop.length > 1) {
var e = prop.shift();
assign(obj[e] =
Object.prototype.toString.call(obj[e]) === "[object Object]"
? obj[e]
: {},
prop,
value);
} else
obj[prop[0]] = value;
}
}

模型在 Controller 中返回为 null。我也尝试了以下代码,结果相同。

$.ajax({
type: "POST",
traditional: true,
dataType: "json",
url: "url",
data: { model: $('#frm').serializeArray(), stepActionId: stepId, stepNumber: 3 }
cache: false,
complete: function (data) {
}});

最佳答案

您需要构建对象、分配属性(确保它匹配任何模型验证并且字段名称与您的模型相同)并使用 JSON.stringify 进行转换:

 var modelObj = {};
modelObj.prop1 = $('#txtField1').val();
modelObj.prop2 = $('#txtField2').val();
// etc... make sure the properties of this model match EditScreenModelValidation

var postObj = JSON.stringify(modelObj); // convert object to json

$.ajax({
type: "POST",
traditional: true,
dataType: "json",
url: "/Workflow/Home/ProcessWorkflowAction",
data: { model: postObj, stepActionId: stepId, stepNumber: 3 }
cache: false,
complete: function (data) {
if (data.responseText.length > 0) {
var values = $.parseJSON(data.responseText)
$('#ActionErrors').html(values.message)
}
else {
location.reload();
}
}});

关于javascript - C# MVC 发布模型和从 js 到 Controller 的附加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34362510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com