【问题标题】:Format $.ajax call for asp.net mvc为 asp.net mvc 格式化 $.ajax 调用
【发布时间】:2015-07-22 23:53:40
【问题描述】:

所以我一直在使用 ASP.NET MVC 5 Web 应用程序,并且正在做一个调查式项目。本质上,用户被问到一个问题,我进行了一些格式化,然后我希望将数据传回我的控制器,以便在另一个视图中提供下一个问题。问题是将数据从 javascript 变量传递到 c# 变量(方法)。这是我的代码:


Javascript:

function validateDateInput() {
    var year = $('#yearInput').val();
    var month = $('#monthInput').val();
    var day = $('#dayInput').val();
    //a lot of validation in here to make sure the date is an actual date
    goToNextQuestion(month + '/' + day + '/' + year);
}
function goToNextQuestion(output) {
    //here is where I need to pass my variable, output, to a c# function in my controller
    //I need to call the method submitUserAnswer(output)
}

还有我的 C# 代码:

public void submitUserAnswer(String userOutput) {
    //here I take the answer and feed the user the next question, possibly linking to other c# methods
}

所以我最初打算使用[WebMethod],但在那里遇到了一些问题(我对 C# 和 ASP.Net 非常陌生,找不到实现它的方法。我不能出于显而易见的原因,只需将变量传递给ViewBag,然后我遇到了一个建议使用jQuery Ajax 调用的帖子。我以前从未使用过Ajax。如何格式化Ajax 调用来做我想做的事,或者是还有另一种更简单的方法来做同样的事情吗?

【问题讨论】:

    标签: javascript c# jquery asp.net ajax


    【解决方案1】:

    如果您希望使用 AJAX 调用,您可以使用简单的 AJAX 将您的数据发送到您的控制器。这会将数据发送到您的控制器方法(subtmitUserAnswer)并返回数据(响应),您可以使用该数据填充页面。

    如果您希望重定向到各种页面/视图,您不应该使用 AJAX,因为 RedirectToAction() 作为 C# ActionResult 将无法通过 AJAX 运行。您可以在成功处理程序中使用 window.location.href 移动页面,但是如果您希望根据答案定向到各种视图,这最适合将模型传递给您的控制器并正确使用 MVC。这是基本的 MVC 功能,更多信息可以在 here 或在线众多教程之一中找到。

    如果您希望异步,这里是您需要的 AJAX 调用。从后端调用数据/逻辑并保持在同一页面上。

    var dateInput = "";
    
    function validateDateInput() {
        var year = $('#yearInput').val();
        var month = $('#monthInput').val();
        var day = $('#dayInput').val();
        //a lot of validation in here to make sure the date is an actual date
        var dateInput = (month + '/' + day + '/' + year);
    
        $.ajax({
            type: "POST",
            url: "~/Controllers/controllerName/submitUserAnswer", //Put your path here.
            data: { userOutput : dateInput }
            success: function (response) {
                //Success! Utilize the data sent back in "response" here
        }
        //add Error handling here
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      • 2010-12-17
      • 2018-04-26
      • 1970-01-01
      • 2010-12-21
      • 2016-08-14
      相关资源
      最近更新 更多