c# - 无法从 KendoUI 获取 Post 值
问题描述
我按照https://demos.telerik.com/kendo-ui/multiselect/addnewitem使用 KendoUI Multi Select 添加新项目
控制器:
[HttpPost]
[Route("admin/blog/PostTag")]
public IActionResult PostTag([FromForm]TagModel models)
{
return Ok();
}
模型总是得到空值,我也尝试不使用 [FromForm]PostTag(TagModel models)
或使用 [FromBody] 但它不起作用。
标记模型类:
public class TagModel
{
public int Id {get;set;}
public string Tag { get; set; }
}
查看页面上的 KendoUi:
<select asp-for="Tag" data-placeholder="Chọn tag"></select>
<script id="noDataTemplate" type="text/x-kendo-tmpl">
# var value = instance.input.val(); #
# var id = instance.element[0].id; #
<div>
No data found. Do you want to add new item - '#: value #' ?
</div>
<br />
<button class="k-button" onclick="addNew('#: id #', '#: value #')" ontouchend="addNew('#: id #', '#: value #')">Add new item</button>
</script>
<script>
function addNew(widgetId, value) {
var widget = $("#" + widgetId).getKendoMultiSelect();
var dataSource = widget.dataSource;
if (confirm("Are you sure?")) {
dataSource.add({
Id: 0,
Tag: value
});
console.log(dataSource);
dataSource.sync();
//dataSource.one("requestEnd", function (args) {
// if (args.type !== "create") {
// return;
// }
// console.log(args.type)
// var newValue = args.response[0].id;
// dataSource.one("sync", function () {
// widget.value(widget.value().concat([newValue]));
// });
//});
//dataSource.sync();
}
}
</script>
<script>
$(document).ready(function () {
var crudServiceBaseUrl = "/admin/blog";
var dataSource = new kendo.data.DataSource({
batch: true,
transport: {
read: {
url: "https://localhost:44383/admin/blog/gettags"
},
create: {
url: "https://localhost:44383/admin/blog/posttag",
type: "POST",
dataType: "jsonp" // "jsonp" is required for cross-domain requests; use "json" for same-domain requests
},
parameterMap: function (data, type) {
if (type != "read" && data.models) {
console.log(data.models);
return { models: kendo.stringify(data.models) };
};
}
},
schema: {
model: {
id: "Id",
fields: {
Id: { type: "number" },
Tag: { type: "string" }
}
}
}
});
$("#Tag").kendoMultiSelect({
filter: "startswith",
dataTextField: "Tag",
dataValueField: "Id",
dataSource: dataSource,
noDataTemplate: $("#noDataTemplate").html()
});
});
</script>
解决方案
推荐阅读
- magento - Shopify 和 Magento 1 实时同步库存
- database - 只读角色的 Postgres 默认权限
- reactjs - 当客户端在 Docker 中时,Crud React spring-boot 应用程序返回 404
- php - 致命错误:指令“asp_tags” - 在 Windows 10 中使用命令提示符 PHP 安装作曲家
- java - 如何在java selenium中将屏幕截图附加到范围报告
- php - PHP:有条件插入
- spring-security - Spring 反应式安全 - 类型 javax.servlet.Filter 不存在
- java - 仅知道目录的相对路径时如何读取目录中的文件
- scala - 如何使用 list.collect 或 list match 来获取正确的数据
- php - PHP 云存储应用程序是否应该为每个用户创建一个包含每个用户文件行的新表?