提交 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 中,并将替换,如我们的选项

所定义