我有一个带有两个字段的表单,它将值传递给存储过程。存储过程将返回0或1。
如果为0,则用户没有资格查看数据。如果是1,他就是。然后我想在我提交的同一页面中显示详细信息。我正在使用MVC 4剃须刀。
请介绍一下如何实现这一目标。我是MVC的新手。
答案 0 :(得分:6)
您可以使用javascript ajax发布自己的。使用此方法,您可以通过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>
答案 1 :(得分:3)
如果您希望可以使用MVC Ajax Helper,并使用Ajax.BeginForm(),或使用javascript和标准表单发布。无论选择什么,在你的Action中只返回一个View。
如果您使用Ajax.BeginForm(),您可以指定要更新的ID的元素,并且通过返回View,您可以更好地控制与返回内容相比返回的内容。
@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",);
}
这里我们有一个返回PartialView的基本控制器。然后将该Partial插入到指定的Id中,并将替换,由我们的选项
定义答案 2 :(得分:0)
如果我理解正确,您需要使用Ajax.Beginform(或Ajax.Action)。 所以,看看这个答案我希望它会对你有所帮助 https://stackoverflow.com/a/5410121/2115584