Ajax 将部分视图中的表单模型发送到json函数

Ajax 将部分视图中的表单模型发送到json函数,ajax,json,asp.net-mvc-3,partial-views,Ajax,Json,Asp.net Mvc 3,Partial Views,我有一个在通讯邮件列表中保存电子邮件的部分视图,该列表用于网站的主要部分视图。当点击它的按钮时,它应该将表单发送到services.js,然后发送到action以保存在数据库中。但它在其中保存了“null”,当我在动作上设置断点时,它就不符合了。我该怎么办 通讯模式: public class NewsletterModel { [Required(ErrorMessage = "Please enter your email address!")] [

我有一个在通讯邮件列表中保存电子邮件的部分视图,该列表用于网站的主要部分视图。当点击它的按钮时,它应该将表单发送到services.js,然后发送到action以保存在数据库中。但它在其中保存了“null”,当我在动作上设置断点时,它就不符合了。我该怎么办

通讯模式:

 public class NewsletterModel
    {
        [Required(ErrorMessage = "Please enter your email address!")]
        [Display(Name = "Email")]
        public string Email { get; set; }

        public Int16 LanguageId { get; set; }
    }
部分视图代码:

    @model Orinus.Models.NewsletterModel

<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<link href="../../Content/Default/Site.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/Services.js" type="text/javascript"></script>

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

    <div class="editor-label">
        @Html.LabelFor(model => model.Email)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Email)
        @Html.ValidationMessageFor(model => model.Email)
    </div>
<br />
    <p>
     <input type="button" value="Register" id="saveEmailNewsletter" class="ButtonStyle"/>
   </p>
}
此代码适用于Services.js:

/// <reference path="jquery-1.7.1.min.js" />

$(function () {
    $("#saveEmailNewsletter").click(function () {
    var email = $("#Email").val();
    var language = 1;
    newsLetter = { 'Email': email,'Language': language };
        if (dat == null) {
            alert("Please enter your email address!");
            return;
        }

        $.ajax({
            url: '/Newsletter/Index',
            type: 'POST',
            dataType: 'json',
            data: newsLetter,
            contentType: 'application/json; charset=utf-8',
            success: function (result) {
                if (result.success) {
                    // We have a JSON object in case of success
                    Alert ('Successfully registered...');
                } else {
                    // We have the partial with errors in case of failure
                    // so all we have to do is update the DOM
                    $('#resultMessage').dialog(result);
                }
            }
        });
    })
});
//
$(函数(){
$(“#保存电子邮件通讯”)。单击(功能(){
var email=$(“#email”).val();
var语言=1;
通讯={'Email':Email,'Language':Language};
如果(dat==null){
提醒(“请输入您的电子邮件地址!”);
返回;
}
$.ajax({
url:“/Newsletter/Index”,
键入:“POST”,
数据类型:“json”,
资料来源:时事通讯,
contentType:'application/json;charset=utf-8',
成功:功能(结果){
如果(结果、成功){
//如果成功,我们有一个JSON对象
警报(“已成功注册…”);
}否则{
//如果发生故障,我们有部分错误
//所以我们所要做的就是更新DOM
$('resultMessage')。对话框(结果);
}
}
});
})
});

您可以将电子邮件和语言作为页面参数发送。希望如此helps@sgud感谢您的帮助,我以前看过这个链接,但是当您发送它时,我再次看到它,通过使用Jason.stringify并更改代码的一些部分,解决了我的问题。谢谢。但我想知道你的第一条评论,请告诉我如何使用这种方式并作为页面参数发送?
/// <reference path="jquery-1.7.1.min.js" />

$(function () {
    $("#saveEmailNewsletter").click(function () {
    var email = $("#Email").val();
    var language = 1;
    newsLetter = { 'Email': email,'Language': language };
        if (dat == null) {
            alert("Please enter your email address!");
            return;
        }

        $.ajax({
            url: '/Newsletter/Index',
            type: 'POST',
            dataType: 'json',
            data: newsLetter,
            contentType: 'application/json; charset=utf-8',
            success: function (result) {
                if (result.success) {
                    // We have a JSON object in case of success
                    Alert ('Successfully registered...');
                } else {
                    // We have the partial with errors in case of failure
                    // so all we have to do is update the DOM
                    $('#resultMessage').dialog(result);
                }
            }
        });
    })
});