ASP.Net MVC模型绑定到javascript
ASP.Net MVC model binding to javascript
问题很简单:我使用@Html.EditorForModel()
为我的模型生成字段。然后用户填写所有这些字段,我想通过AJAX
发送这个字段,因为我应该在不重新加载页面的情况下完成几个服务器的服务。
我在谷歌上搜索了几种方法,但似乎没有标准的方法来做这些事情。我的意思是,我在客户端并没有一个表示模型的对象。我发现一个单独的库调用JSModel
(链接),但它似乎不起作用。我现在的代码是:
@model Student
<script src="@Url.Content("~/scripts/jquery-1.12.2.min.js")" type="text/javascript" async="async"></script>
<script src="@Url.Content("~/scripts/Requester.js")" type="text/javascript" async="async"></script>
<script src="@Url.Content("~/scripts/jsmodel.js")" type="text/javascript"></script>
<script type="text/javascript">
var requester = new Requester(@Html.Raw(Json.Encode(new Student())));
function SendSignupRequest() {
requester.SendSignupRequest();
}
</script>
<h2>Student</h2>
<div>
@Html.EditorForModel()
</div>
<input type="button" value="Send" onclick="SendSignupRequest()"/>
Requester.js:
function Requester(rawModel) {
this.modelObj = new JSModel(rawModel);
this.SendSignupRequest = function() {
var model = modelObj.refresh();
var val = model.prop("Name");
alert(val);
}
}
有没有什么简单的方法可以在JSON中序列化模型对象并将其发送到服务器,而无需手动构建具有数百万document.getElementById
的对象?
查看
@using (Html.BeginForm("action", "controller", FormMethod.Post, new { @class = "form-horizontal form-compact ", role = "form", id = "form1" }))
{
}
Java脚本
var formdata = $("#form1").serializeArray();
$.ajax({
url: url,
type: 'POST',
data: formdata,
success: function (data) {
}
控制器
public ActionResult action(Model model)
{
//access data here
}
您可以使用jQuery:将表单序列化为JSON对象
var data = $('form').serialize();
(当然,这意味着将表单元素包装在form
中,这无论如何都应该发生。)
然后在POST请求中将data
对象传递给服务器。简单如:
$.post('some/url', data, function(response) {
// success callback
});
而无需手动构建具有数百万文档的对象。getElementById
请注意,如果您的对象具有数百万的字段,那么您很可能会在此处遇到其他问题。
Yes you can use form serialize using Jquery
var formData = $('#form').serializeObject();
$.extend(formData, { Contacts : myContacts});
$.extend(formData, { Address : myAddress});
var result = JSON.stringify(formData);
$('#formHiddenField').val(result);
then submit form using:
$.ajax(
url: @Url.Action("post url")
data: myForm.serialize(),
dataType: 'json',
type: 'POST',
success: function(){
})
为什么不使用Ajax.BeginForm()
呢。我相信模型绑定是自动工作的。
相关文章:
- 对象文字方法上的Javascript绑定不起作用
- 将日期时间javascript绑定到表列
- javascript绑定另一个select2输入字段rails的select2 inputonchange事件的数据
- 从 Javascript 绑定到 MetroStyle App 中的 InnerHTML
- 使用Javascript绑定立即调用方法
- 关于JavaScript绑定方法
- Javascript绑定提交事件
- wp8和winrt上的javascript绑定
- Is Javascript绑定由值调用
- 将javascript绑定到提交按钮时出现问题
- Javascript绑定语法
- Javascript 绑定使用调用和 setInterval
- 在Selenium webdriver javascript绑定中创建“自定义”承诺
- Javascript 绑定函数到 Ajax 加载事件
- 使用自定义 Javascript 绑定在 Python 中嵌入 Gecko
- 使用 ajax 将我的 asp.net 网格视图与 javascript 绑定
- PHP 相当于 JavaScript 绑定
- javascript绑定's函数参数解释
- Javascript:绑定到函数的右侧
- 创建和使用iOS设置.在PhoneGap中使用JavaScript绑定值