【发布时间】:2018-04-24 08:08:23
【问题描述】:
我正在尝试使用 Ajax 将用于创建数据库对象的表单数据传递给 create 操作。我这样做是因为我想在成功时更新部分。但是,我似乎无法从表单中检索数据。
我曾尝试像这样通过 url 传递模型,但结果为空:
<button type="submit" onclick="javascript: CreateEntity('@Url.Action("CreateItem", "Home", Model)')">Submit</button>
<script>
function CreateEntity(createAction) {
$.ajax({
type: "POST",
url: createAction,
dataType: 'html',
success: function (data) {
$('#form-container).html(data);
}
});
}
</script>
我也尝试将模型作为 json 字符串传递给 ajax,但我得到一个奇怪的不正确语法错误:
<button type="submit" onclick="javascript: CreateEntity('@Url.Action("CreateItem", "Home")', '@Html.Raw(Json.Serialize(Model))')">Submit</button>
<script>
function CreateEntity(createAction, entity) {
var model = JSON.parse(entity);
$.ajax({
type: "POST",
url: createAction,
data: { model: model },
dataType: 'html',
success: function (data) {
$('#form-container).html(data);
}
});
}
</script>
我的创建操作基本上是这样的:
public IActionResult (Item model)
{
//save model to db
}
但无论我在表单中输入什么,所有模型字段都会返回 0 或 null。
编辑:
EntityFramework 正在生成表单,如下所示:
@Html.EditorForModel()
我需要能够从中获取输入并通过 ajax 传递。
【问题讨论】:
-
如何通过 JQuery 发布表单内容的可能重复:stackoverflow.com/questions/1960240/jquery-ajax-submit-form
-
并非如此。我的问题与
@Html.EditorForModel有关,在这种情况下,您并不能真正给您表单ID。
标签: c# ajax entity-framework razor asp.net-core