提交MVC后在同一视图中显示结果

时间:2015-04-14 10:20:42

标签: asp.net-mvc asp.net-mvc-4 razor view

我有一个带有两个字段的表单,它将值传递给存储过程。存储过程将返回0或1。

如果为0,则用户没有资格查看数据。如果是1,他就是。然后我想在我提交的同一页面中显示详细信息。我正在使用MVC 4剃须刀。

请介绍一下如何实现这一目标。我是MVC的新手。

3 个答案:

答案 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