控制器方法成功后的Ajax警报

时间:2017-10-11 13:19:28

标签: ajax asp.net-mvc razor

我有一个问题,我被搁置了一段时间。我对这些东西比较新,所以请耐心等待。我觉得解决起来很简单,但我现在正在运行圈子。我的目的是做一个简单的警报,通知该方法已经完成。正如您在下面看到的,我的第一次尝试是使用简单的字符串和if语句。我不想再重新加载页面了,但现在我遇到的问题是方法在 alert 脚本启动之后结束。
所以我有一个控制器

        [HttpPost]
    public ActionResult Executor(LMCMainViewModel model)
    {
        var curlsExecutor = _curls;
        var applicationPurgeCurl = curlsExecutor.GetApplicationCurl(model);
        var temporary = model.SuccessExecutionStatus = curlsExecutor.CurlCaller(model.ApplicationList.ApplicationCurl);
        var tempListOfApplications = PopulateModel(model);
        model.ApplicationList.ListOfApplications = tempListOfApplications.ApplicationList.ListOfApplications;
        model.SuccessExecutionStatus = temporary;
        return View("ListOfApplications", model);
    }

我的视图

                @model LMC.Models.LMCMainViewModel
            @{
                ViewData["Title"] = "Liberation";
            }
            @using (Html.BeginForm("HeaderString", "LMC"))
            {
            }
            @using (Html.BeginForm("Executor", "LMC", FormMethod.Post))
            {

                <div class="col-sm-2" asp-action="ListOfApplications">
                    @Html.DropDownListFor(x => x.ApplicationList.ChosenApplication, Model.ApplicationList.ApplicationListItem, new { @id = "DropdownID" })
                </div>

                <div class="col-sm-2 col-sm-push-5">
                    @Html.HiddenFor(x => x.ApplicationList.ApplicationListItem)
                    <input class="btn ctn-success" id="submit" type="submit" value="Submit" />
                    <button id="submitButtonAjax" type="button" class="btn btn-success">Ajax button</button>

                    <div class="col-sm-12">
                        @Html.Label(null, (Model.SuccessExecutionStatus ? "Success" : " "),
                       new { Style = Model.SuccessExecutionStatus ? "color: green;" : "color: red;" })


                    </div>
                </div>
            }

我试图实现Ajax脚本的许多变体,但是我变得如此扭曲,以至于我甚至无法发布给你最好的...我知道的一件事是,当我删除:@using (Html.BeginForm("Executor", "LMC", FormMethod.Post))并尝试将它放入Ajax它根本不起作用。我的意图是有一些像这样的东西:

    <script type="text/javascript">
    $("#submitButtonAjax").on("click", function () {
        $.ajax({
            type: 'POST',
            url: "/LMC/Executor",
            success: function () {
                alert("Went well");
            }
    });
</script>

我试图将控制器方法返回到Json,但它也没有用。我会感谢任何建议,我可以阅读类似的任何东西(我知道可能有很多类似的主题,但我无法实现任何适用于我的代码的东西,因为我发现我的问题倒退了一步与其他人比较),或者这很容易,我错过了一些东西,你可以发布一个解决方案。无论如何,非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

ajax调用应该看起来像下面的

 $( document ).ready(function() {
        $("#submitButtonAjax").on("click", function () {
            var postData = {
                FirstPropertyOfTheModel: ValueForTheFirstProperty,
                SecondPropertyOfTheModel: ValueForTheSecondProperty,
            };

        $.ajax({
            type: 'POST',
            url: "/LMC/Executor",
            data:postData,
            success: function () {
                alert("Went well");
            },
            error: function () {
                alert("Opssss not working");
            }
        });
    });
    });

data是控制器的ActionResult方法模型的值。 FirstPropertyOfTheModel和SecondPropertyOfTheModel将被属性名称替换,并相应地分配相应的值。在网址,你可以使用

'@Url.Action("Executor", "LMC")'

所以ajax看起来像

 $( document ).ready(function() {
            $("#submitButtonAjax").on("click", function () {
                var postData = {
                    FirstPropertyOfTheModel: ValueForTheFirstProperty,
                    SecondPropertyOfTheModel: ValueForTheSecondProperty,
                };

            $.ajax({
                type: 'POST',
                url: '@Url.Action("Executor", "LMC")',
                data:postData,
                success: function () {
                    alert("Went well");
                },
                error: function () {
                    alert("Opssss not working");
                }
            });
        });
        });