我有一个编辑页面,当我按下按钮然后将名为#main的页面的给定部分的div更改为另一个页面以便使用新信息更新它时,我想向服务器提交一些更改
要做到这一点,我不认为我可以使用提交按钮(如果我错了,请更正我?)所以我使用jquery函数来处理点击和更改页面的选定部分。 / p>
目前发送到服务器的对象是空的,而不是修改后的内容。
以下是有问题的视图:
@model Project.Models.ExampleModel
@using (Html.BeginForm())
{
<fieldset>
<legend>Edit Example: @Model.name</legend>
<br/>
@Html.LabelFor(c => c.name)
@Html.TextBoxFor(c => c.name)
<br/>
@Html.LabelFor(c => c.dropdown)
@Html.DropDownListFor(c => c.dropdown, Model.dropdowns)
<br />
<br />
<input type="button" data-edit-id="@Model.id" value="Submit Changes" />
</fieldset>
}
<script type="text/javascript">
$(document).ready(function () {
$('input[data-edit-id]').on('click', function () {
var id = $(this).attr('data-edit-id');
console.log(id);
$.post('Home/EditPage', '@Model');
$("#main").load("/Home/NewDivPage?id=" + id);
});
});
</script>
非常感谢任何帮助
答案 0 :(得分:1)
这是错误的
$.post('Home/EditPage', '@Model');
在服务器端评估 @Model
,并在客户端使用该表达式获得简单的字符串。您应该动态序列化form
并将其内容发送到服务器
$.post('Home/EditPage', $('form').serialize());
此外,最后一个语句应作为回调传递给$ .post,因此它将在post完成加载后执行
$.post('Home/EditPage', $('form').serialize(), function(){
$("#main").load("/Home/NewDivPage?id=" + id);
});