所以我一直在使用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调用做我想做的事情,还是有另一种更简单的方法来做同样的事情?
答案 0 :(得分:1)
如果您希望使用AJAX调用,可以使用简单的AJAX将数据发送到Controller。这会将数据发送到您的Controller Method(subtmitUserAnswer)并返回数据(响应),您可以使用该数据填充页面。
如果您希望重定向到各种页面/视图,不应使用AJAX,因为RedirectToAction()
因为C#ActionResult
无法通过AJAX运行。您可以在成功处理程序中使用window.location.href移动页面,但是如果您希望根据答案指向各种视图,这最适合将模型传递给Controller并正确使用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
});
}