实施例: 我有一个“联系我们”视图和控制器。
我的观点呈现联系我们表格以及包含邮政,电话和电子邮件信息的页面其余部分。
提交表单时,我想呈现相同的数据,只需减去联系我们表单,然后显示“发送的消息”。
我在控制器上有一个“发送”方法,可以使用联系我们视图中的所有数据创建一个“发送”视图,减去联系我们表单和“发送消息”字符串。但显然现在在两个地方复制代码远非理想。
有更好的方法吗?
答案 0 :(得分:1)
我建议您使用Ajax.BeginForm而不是使用BeginForm。原因是您不需要创建另一个动作,Ajax.BeginForm将为您更新显示局部视图。
以下是一个例子:
<强>动作强>
[HttpGet]
public ActionResult Contact()
{
return View(new Contact());
}
[HttpPost]
public ActionResult Contact(Contact contact)
{
if (ModelState.IsValid)
{
//
}
return PartialView("_messagePartialView", contact);
}
查看强>
@model Demo.Models.Contact
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<div id="result">
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "result" }))
{
@Html.EditorFor(x => x.Email)
<input type="submit" value="OK" />
}
</div>
部分视图:_messagePartialView
@model Demo.Models.Contact
<h1>
@Model.Email
</h1>
答案 1 :(得分:0)
我假设您有一个用于从用户那里获取数据的联系人模型。
我假设你有如下发送方法:
[HttpPost]
public ActionResult Send(Contact contact){
// process your model. ie : send email etc.
TempData["contactData"] = contact;
return RedirectToAction("Sent");
}
public Actionresult Sent(){
return View();
}
在发送的视图中,您可以使用TempData
并访问Contact
模型属性。