ASP.NET MVC 会话状态

8

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

当我上传文件并通过几个回调函数向服务器发送JS以显示上传进度时,我试图获取有关当前上传状态的信息,但只有在文件上传完毕时才会收到服务器的响应。

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

如果有人知道答案,我将非常感激,并且我相信其他人也会。

1个回答

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

对于您的操作,您将拥有:

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

然后在您的表单中使用了一些异步JavaScript,使用jQuery:

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();
    }
}

这将允许您从服务器获取一些信息,而不需要提交表单并保持客户端的视图状态。这里有一个完整的示例介绍可能会有所帮助。

return Json(new { SearchText = searchText + "completestring"},"text/json",JsonRequestBehavior.AllowGet); - Bellash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接