gpt4 book ai didi

javascript - 将 json 传递到 MVC Controller

转载 作者:行者123 更新时间:2023-11-28 18:25:28 25 4
gpt4 key购买 nike

我看过很多关于这个主题的帖子,尽管应用解决方案对我来说不起作用,而且我现在很困惑。 Mb我错过了什么?

请考虑一下我是 .js 方面的菜鸟。

因此,我使用此 JS 从动态创建的表单元素中获取值,并尝试发布它:

编辑 12:21:我得到了这个脚本,它应该将表单中的每个元素解析为类似于 json 的自定义数组。但我仍然得到空引用。知道如何获得它吗?

 var getValues = function (myForm) {
var array = [];
var parser;

$("formElement").each( function (i, elem) {

parser.empty()
parser = {
Id: $(elem,"#Id ").val(),
someOption: $(elem, "#someOption ").val(),
someText: $(elem, "#someText ").val(),
someNumber: $(elem, "#someNumber ").val()
}
array.push(parser);

});

console.log(array);


$.ajax({
type: "POST",
url: 'angus',
traditional: true,
data: {json: array },
success: function (data) {
$("#getData").empty();
$("#getData").append(array);
}
});
};

我在日志中得到了这个:(像 i、i+1、i+2、i+3 这样的索引对象与 View 模型匹配 - 这是正确的吗?我对这些原型(prototype)和函数有复杂的感觉 - 它是什么?) enter image description here

在我的 Controller 操作中,我得到 null 异常:

 [HttpPost]
public ActionResult angus(IEnumerable<TrashViewModel> json)
{

return View(json.ToList());
}

我创建了我的 View 模型:

  [Serializable]
public class TrashViewModel
{
public int Id { get; set; }
public string someOption { get; set; }
public string someText { get; set; }
public string someNumber { get; set; }

}

我的表单 HTML 属性名称与 viemodel 类的名称相匹配。

编辑:html:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div ng-app="formExample" ng-controller="ExampleController">

<button class="btn btn-primary" ng-controller="addRow" ng-click="addLine()">Dodaj przycisk</button>

<form novalidate class="simple-form">
<div class="here">
<div class="formElement row">

<input type="hidden" name="Id" value="1"/>
<div class="col-md-2">
<select name="someOption" class="optns form-group col-md-12" ng-model="user.class">
<option selected value="1"> Rodzaj... </option>
<option value="test">2</option>
<option value="2">test</option>
<option value="2">2</option>
<option value="3">3</option>
@*tutaj beda dodane opcje*@
</select>
</div>
<div class="col-md-1">
<input name="someNumber" class="form-group col-md-12" type="number" ng-model="user.number" value="" text="Ilość..." /><br />
</div>
<div class="col-md-9">
<input name="someText" class="form-group col-md-12" type="text" ng-model="user.text" value="" text="Uwagi..." /><br />
</div>
</div>
</div>
<input type="button" value="Reset" />
<input type="submit" value="Save" />
</form>
</div>

附加html:

 var strVar = "";
strVar += "<div class=\"formElement row\">";
strVar += " <input type=\"hidden\" name=\"Id\" value=\" "+ $scope.counter +"\"\/>";
strVar += " <div class=\"col-md-2\">";
strVar += " <select name=\"someOption\" class=\"optns form-group col-md-12\" ng-model=\"user.class\">";
strVar += " <option selected value=\"1\"> Rodzaj... <\/option>";
strVar += " <option value=\"test\">2<\/option>";
strVar += " <option value=\"2\">test<\/option>";
strVar += " <option value=\"2\">2<\/option>";
strVar += " <option value=\"3\">3<\/option>";
strVar += " @*tutaj beda dodane opcje*@";
strVar += " <\/select>";
strVar += " <\/div>";
strVar += " <div class=\"col-md-1\">";
strVar += " <input name=\"someNumber\" class=\"form-group col-md-12\" type=\"number\" ng-model=\"user.number\" value=\"\" text=\"Ilość...\" \/><br \/>";
strVar += " <\/div>";
strVar += " <div class=\"col-md-9\">";
strVar += " <input name=\"someText\" class=\"form-group col-md-12\" type=\"text\" ng-model=\"user.text\" value=\"\" text=\"Uwagi...\" \/><br \/>";
strVar += " <\/div>";
strVar += " <\/div>";

我最终得到了 null 异常,根据其他帖子的建议,这是因为 viemodel 类与序列化对象不匹配。现在不知道该怎么办。

谢谢!

最佳答案

为了 POST 数组,您需要对数据进行字符串化并设置 contentType 选项。你的ajax代码需要是

$.ajax({
type: 'POST',
url: '@Url.Action("angus")', // do not hard code url's
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ model: array }),
success: function (data) {

和 Controller

[HttpPost]
public ActionResult angus(IEnumerable<TrashViewModel> model)

关于javascript - 将 json 传递到 MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39265053/

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