【问题标题】:ASP.NET MVC Session StateASP.NET MVC 会话状态
【发布时间】:2012-07-13 17:12:51
【问题描述】:

我目前正在尝试使用 jquery 在 MVC 中创建带有进度条的上传控件。我一直遇到一个问题,但是 mvc 不能在并行线程中工作?

当我上传一个文件并显示从 JS 通过几个回调执行到服务器的上传过程中的进度时,我试图获取有关当前上传状态的信息,但只有在文件上传后服务器才会回复。

您知道在 MVC 中不断或在执行请求时获取会话状态查询的任何方法吗?

非常感谢一些帮助,如果有人知道答案,我相信其他人会这样做!

【问题讨论】:

    标签: asp.net-mvc session-state


    【解决方案1】:

    如果您调用返回视图的操作,您将丢失视图状态。如果愿意,您可以使用 TempData 在操作之间传递数据,但这可能无法解决您的问题。在我看来,您想要的是一个返回 JSON 元素的操作,您可以使用一些异步 javascript 调用该元素。

    对于您的操作,您将:

    public ActionResult GetSuggestions(string searchText)
    {
        return Json(new { SearchText = searchText + "completestring"});
    }
    

    然后在你的表单上你有一些使用 jQuery 的异步 javascript:

    function startAutoComplete() {
        var searchText = $("#inputText").val();
        $.getJSON("/Search/GetSuggestions?searchText=" + searchText, null, autoCompleteResponse);
    }
    
    function autoCompleteResponse(data) {
        if (data.SearchText) {
            $("#inputText").val(data.SearchText);
            $("#inputText").select();
        }
    }
    

    这将允许您从服务器获取一些信息,而无需发布表单并保持客户端的视图状态完整。

    There is a full write up of the example here 这可能会有所帮助。

    【讨论】:

    • return Json(new { SearchText = searchText + "completestring"},"text/json",JsonRequestBehavior.AllowGet);
    猜你喜欢
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2010-09-28
    • 2011-06-07
    • 2010-11-02
    • 1970-01-01
    • 2010-10-27
    相关资源
    最近更新 更多