提交序列化数据时返回MVC视图(MVC,Ajax)

时间:2015-06-10 20:39:16

标签: jquery ajax asp.net-mvc asp.net-mvc-4

我是mvc的新手 我有这个AJax和Controller,

我需要返回一个说“发送电子邮件”的视图

现在控制器将我重定向到

http://localhost:1365/?Name=as&Adress=adsads&city=a&state=as&zip=as&phone=asas&Message=a

Ajax Call

<script>
        $(function () {
            $("#JqAjaxForm").submit(function () {
                debugger;
                var sdata = $("#JqAjaxForm").serialize();

                alert(sdata);

                senddata = { "daye": sdata };

                $.ajax({

                    url: '/Email/emaildata',
                    async: false,
                    type: "POST",
                    data: JSON.stringify(senddata),
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    error: function (jqXHR, textStatus, errorThrown) {
                       alert("FAIL: " + errorThrown);
                    },
                    success: function (data, textStatus, jqXHR) {
                        alert("Email Sent");
                    }
                });
            });
        });
    </script>

控制器

// GET:/ Email /

   public ActionResult emaildata(string Daye)
    {
        var a = Daye;

        return View();
    }

1 个答案:

答案 0 :(得分:2)

您不需要json序列化也不需要AJAX。首先创建一个类来保存表单域。

public class EmailForm
{
    public string Name { get; set; }
    public string Address { get; set; }
    public string Message { get; set; }
}

然后,您的表单会将EmailForm属性名称与输入名称匹配。

<form action="/Email/emaildata" method="POST">
    <input type="text" name="Name" />
    <input type="text" name="Address" />
    <textarea type="text" name="Message"></textarea>
    <button type="submit">Send</button>
</form>

您的POST操作将EmailForm作为参数,值将为您绑定。

[HttpPost]
public ActionResult emaildata(EmailForm form)
{
    // access properties e.g. form.Name
    // add send email code here

    TempData["emailform"] =  form;
    return RedirectToAction("EmailSent");
}

然后向浏览器返回重定向响应。使用TempData字典将数据传递给重定向的操作。

[HttpGet]
public ActionResult EmailSent()
{
    var form = TempData["emailform"] as EmailForm;
    return View(form);
}

现在,您的MVC视图结果页面可以使用原始数据

@model MyNamespace.EmailForm

Email Sent!
<ul>
    <li>@Model.Name</li>
    <li>@Model.Address</li>
    <li>@Model.Message</li>
</ul>