提交 MVC 后在同一视图中显示结果
Show result in same view after submit MVC
我有一个包含两个字段的表单,它们会将值传递给存储过程。存储过程将 return 0 或 1.
如果为 0,则用户没有资格查看数据。如果为 1,则他是。然后我想在我提交的同一页面中显示详细信息。我正在使用 MVC 4 剃须刀。
请给出一些实现方法。我是 MVC 新手。
如果我理解正确,您需要使用 Ajax.Beginform(或 Ajax.Action)。
所以,看看这个答案,我希望它能帮助你
您可以使用 javascript ajax 来 post 您的来源。使用这个你可以通过 ajax 获取数据而不刷新页面然后你可以使用你的 ajax 结果来显示数据。
HTML代码
<form id="MyForm" method="post">
<input type="text" name="value1"/>
<input type="text" name="value2"/>
<input type="submit" name="Submit" value="Submit" />
</form>
控制器代码
public class HomeController : Controller
{
[HttpPost]
public ActionResult MyAction(MyViewModel model)
{
var result = ResultOfStoredPrcedure();
return Content(result);
}
}
javascript代码
<script >
$(document).ready(function () {
$('#MyForm').submit(function (e) {
var formData = new FormData(this);
$.ajax({
url: '@Url.Action("MyAction", "Home")',
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: formData,
contentType: false,
processData: false,
success: function (result) {
// here in result you will get your data
},
error: function (result) {
}
});
e.preventDefault();
});
});
</script>
如果您愿意,可以使用 MVC Ajax Helper,并使用 Ajax.BeginForm(),或使用 javascript 和 post 的标准形式。无论选择什么,在您的 Action 中只需 return 一个 View。
如果您使用 Ajax.BeginForm(),您可以通过其 ID 指定要更新的元素,并且通过 returning 视图,您可以更好地控制 returned与 returning 内容相比。
@using (Ajax.BeginForm("MyActionHome", "Home", new AjaxOptions {HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "resultArea"}))
{
<input type="submit" name="Submit" value="Submit" /><
}
<div id="resultArea">
</div>
此表单允许您指定 Action、Controller、Options 以及是否要发送其他参数。我们还指定了要更新的 TargetId,在本例中为 'resultArea'。
如果您需要执行一些客户端代码,您还可以使用 OnComplete 选项并提供 JavaScript 函数。
[HttpPost]
public ActionResult PurchaseUnit()
{
return View("_ResultPartial",);
}
这里我们有一个基本控制器,它 return 是一个 PartialView。然后该部分将被插入到指定的 Id 中,并将替换,如我们的选项
所定义
我有一个包含两个字段的表单,它们会将值传递给存储过程。存储过程将 return 0 或 1.
如果为 0,则用户没有资格查看数据。如果为 1,则他是。然后我想在我提交的同一页面中显示详细信息。我正在使用 MVC 4 剃须刀。
请给出一些实现方法。我是 MVC 新手。
如果我理解正确,您需要使用 Ajax.Beginform(或 Ajax.Action)。 所以,看看这个答案,我希望它能帮助你
您可以使用 javascript ajax 来 post 您的来源。使用这个你可以通过 ajax 获取数据而不刷新页面然后你可以使用你的 ajax 结果来显示数据。
HTML代码
<form id="MyForm" method="post">
<input type="text" name="value1"/>
<input type="text" name="value2"/>
<input type="submit" name="Submit" value="Submit" />
</form>
控制器代码
public class HomeController : Controller
{
[HttpPost]
public ActionResult MyAction(MyViewModel model)
{
var result = ResultOfStoredPrcedure();
return Content(result);
}
}
javascript代码
<script >
$(document).ready(function () {
$('#MyForm').submit(function (e) {
var formData = new FormData(this);
$.ajax({
url: '@Url.Action("MyAction", "Home")',
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: formData,
contentType: false,
processData: false,
success: function (result) {
// here in result you will get your data
},
error: function (result) {
}
});
e.preventDefault();
});
});
</script>
如果您愿意,可以使用 MVC Ajax Helper,并使用 Ajax.BeginForm(),或使用 javascript 和 post 的标准形式。无论选择什么,在您的 Action 中只需 return 一个 View。
如果您使用 Ajax.BeginForm(),您可以通过其 ID 指定要更新的元素,并且通过 returning 视图,您可以更好地控制 returned与 returning 内容相比。
@using (Ajax.BeginForm("MyActionHome", "Home", new AjaxOptions {HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "resultArea"}))
{
<input type="submit" name="Submit" value="Submit" /><
}
<div id="resultArea">
</div>
此表单允许您指定 Action、Controller、Options 以及是否要发送其他参数。我们还指定了要更新的 TargetId,在本例中为 'resultArea'。
如果您需要执行一些客户端代码,您还可以使用 OnComplete 选项并提供 JavaScript 函数。
[HttpPost]
public ActionResult PurchaseUnit()
{
return View("_ResultPartial",);
}
这里我们有一个基本控制器,它 return 是一个 PartialView。然后该部分将被插入到指定的 Id 中,并将替换,如我们的选项
所定义