Asp.net 当ajax请求时,如何保存当前模型?

Asp.net 当ajax请求时,如何保存当前模型?,asp.net,ajax,asp.net-mvc,jquery,asp.net-mvc-4,Asp.net,Ajax,Asp.net Mvc,Jquery,Asp.net Mvc 4,我在应用程序中使用Ajax来更新视图,而不刷新网页 你能注意到吗,因为我用黄色突出显示了局部视图 但问题是,当我向项输入数据时(数学问题),当Ajax请求时,我看不到模型中的更改 public ActionResult DoTest() { List<Worksheet> worksheets = null; if (Request.IsAjaxRequest()) { worksheets =

我在应用程序中使用Ajax来更新视图,而不刷新网页

你能注意到吗,因为我用黄色突出显示了局部视图

但问题是,当我向项输入数据时(数学问题),当Ajax请求时,我看不到模型中的更改

    public ActionResult DoTest()
    {
        List<Worksheet> worksheets = null;

        if (Request.IsAjaxRequest())
        {
            worksheets = Session["Worksheets"] as List<Worksheet>;
            return PartialView("_Problems", worksheets[1]);
        }

        worksheets = new List<Worksheet>()
        {
            new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... }),
            new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... })
        }

        Session["Worksheets"] = worksheets;
        return View(worksheets[0]);
    }

对于一个视图,我通常有两个动作。虽然这不是强制性要求

当用户第一次访问页面时,用
HttpGet
修饰的第一个操作在Get上呈现页面。当用户单击next并发布表单时,将调用第二个操作

public class TestController {

   [HttpGet]
   public void DoTest(){

        var viewModel = new List<Worksheet>()
        {
            new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... }),
            new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... })
        };
        return View(viewModel);
    }

   [HttpPost]
   public void DoTest(List<Worksheet> worksheets){

        //do whatever you want with the user response

        var response =  worksheets[1]; 
        PartialView("_Problems",responseModel);
    }
}
公共类TestController{
[HttpGet]
公共空间DoTest(){
var viewModel=新列表()
{
新工作表(“绝对值的加减法”,新列表(){…}),
新工作表(“绝对值的加减法”,新列表(){…})
};
返回视图(viewModel);
}
[HttpPost]
公共void DoTest(列出工作表){
//对用户响应执行任何您想要的操作
var响应=工作表[1];
PartialView(“问题”,响应模型);
}
}
注意:您必须使用
HttpMethod=“post”
调用ajax调用。ASP.NET中的ModelBinder将请求中发布的值绑定到您的responseModel
工作表


您应该尝试浏览一下

上提供的“getting-started-with-aspnet-mvc4”教程,为什么不将调用分为两个操作。一个是呈现视图的Get操作,另一个是对最终用户的响应进行操作的POST操作。Post操作可以有一个参数列表,ASP.NET ModelBinder将处理其余的@毫无摩擦,这是我理解的第一部分。你能举个例子来指导我吗?我对MVC没有太多的经验,我不知道如何通过HTTPS传递参数列表。看起来您只是在这里获取,而不是将现有数据发布回服务器。你希望它在每次get时更新会话中存储的数据吗?如果我要通过post进行更新,我想会话没有意义。。这是我的第一个选择你试过返回数组吗?返回视图(工作表[0]).toArray();我理解!!我喜欢它!!只有一个疑问,当我按下submit按钮时,它无法访问HTTPPost方法,我是否需要在发布时指定一些routeValue?你是否使用HttpMethod=“post”调用ajax调用?是的,现在它正在访问它。。现在我要处理的是,当我收到我的列表时,值为空。确保模型有一个默认构造函数,并且您正在正确发送命名参数。不,我的意思是,当我调试变量工作表时,它有0个元素。。这是非常罕见的,因为我可以看到数据时,是一个HTTPGET
public class TestController {

   [HttpGet]
   public void DoTest(){

        var viewModel = new List<Worksheet>()
        {
            new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... }),
            new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... })
        };
        return View(viewModel);
    }

   [HttpPost]
   public void DoTest(List<Worksheet> worksheets){

        //do whatever you want with the user response

        var response =  worksheets[1]; 
        PartialView("_Problems",responseModel);
    }
}