美元的格式.asp.net mvc的Ajax调用

本文关键字:Ajax 调用 mvc asp 格式 美元 net | 更新日期: 2023-09-27 18:04:03

所以我一直在使用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调用以完成我想要的操作,或者是否有其他更简单的方法来完成相同的任务?

美元的格式.asp.net mvc的Ajax调用

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

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

这是您希望异步时需要的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
    });
}