我是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();
}
答案 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>