ASP.NET MVC会话状态

8 asp.net-mvc session-state

我目前正在尝试使用jquery在MVC中创建带有进度条的上传控件.我一直遇到问题,因为mvc在并行线程中不起作用?

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

您是否知道有任何方法可以在MVC中不断地或在执行请求时获取会话状态查询?

真的很感激一些帮助,我相信如果有人知道答案,别人会的!

Odd*_*Odd 4

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

对于您的行动,您将拥有:

public ActionResult GetSuggestions(string searchText)
{
    return Json(new { SearchText = searchText + "completestring"});
}
Run Code Online (Sandbox Code Playgroud)

然后在你的表单上你有一些使用 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

这里有一个完整的示例文章可能会有所帮助。