Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC项目暂停且不返回视图_Asp.net Mvc_Razor_View_Return - Fatal编程技术网

Asp.net mvc ASP.NET MVC项目暂停且不返回视图

Asp.net mvc ASP.NET MVC项目暂停且不返回视图,asp.net-mvc,razor,view,return,Asp.net Mvc,Razor,View,Return,我有一个ASP.NETMVC4W/Razor项目,其中包含实体框架和.NETFramework4 在我的chtml视图页面中,我有两个任务,一个是更新帐户设置,另一个是创建新的TTS语音文件(文本到语音)。第一个表单调用我的“box”控制器方法,它工作得非常好,它将更新的值分配到实体数据库中 第二个BeginForm使用一个简单的文本框,我将在其中输入文本,它将指向同一控制器中名为“box\u TTS”的第二个方法 该方法称为fine,没有任何问题。我有我的TTS代码,它接收字符串并对其进行处理

我有一个ASP.NETMVC4W/Razor项目,其中包含实体框架和.NETFramework4

在我的chtml视图页面中,我有两个任务,一个是更新帐户设置,另一个是创建新的TTS语音文件(文本到语音)。第一个表单调用我的“box”控制器方法,它工作得非常好,它将更新的值分配到实体数据库中

第二个BeginForm使用一个简单的文本框,我将在其中输入文本,它将指向同一控制器中名为“box\u TTS”的第二个方法

该方法称为fine,没有任何问题。我有我的TTS代码,它接收字符串并对其进行处理,然后将其保存到实体中。以下是我的TTS Helper类在保存文件时执行的步骤:

1) 它获取文本字符串

2) 它产生了一个波流

3) 然后,它将波流传递给将其转换为VOX文件(另一种类型的语音文件)的方法。在这种方法中,它将wav文件写入磁盘,读取其内容,然后将其转换为vox,然后再次将其读入内存

4) 文件转换为vox并读入内存后,该方法将blob写入E.F中的表中

5) 然后从临时目录中删除wav和vox文件

我不能完全在内存中进行这种转换,因为这样做的目的不是在文本较大且TTS引擎需要同时执行多个进程时占用内存

在我的控制器中,这是调用TTS helper方法的方法的代码:

 [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Boxes_TTS(BulletinBoardBoxesViewModel vm)
    {
        SetHttpContext(this.HttpContext);
        if (!IsIPAllowed)
            return new RedirectResult(@"~/Home/NotNow", true);

        var id = Session["RecordID"];
        if (id == null)
            return new RedirectResult(@"~/Home/Index", true);


        int? BoxID = (int?)Session["SelectedBBBoxID"];

        if (BoxID == 0)
            BoxID = null;

        vm.submitTTS((int)Session["RecordID"], (int)Session["CompanyID"], BoxID);

        ViewBag.SubmittedData = "Your TTS message has been made active.";

        return View("Boxes",vm);
    }
我逐步浏览了代码和返回视图(“box”,vm);正在执行行,但从未导航到视图框。相反,MVC站点被暂停,并且在我的Internet Explorer页面上有一个“忙碌”图标。过了一段时间,busy图标停止,当我尝试导航到站点中的另一个页面时,它不起作用,给我空错误,等等。如果我删除vm.submitts()方法,返回视图工作得非常好

有什么建议吗

谢谢


Yura

如果希望该方法返回一个“ActionResult”,那么我认为您需要返回一个ViewResult。

看起来我必须创建一个新线程,并使用Microsoft的SpeechSynthesis。有关使用SpeechSynthesizer创建新线程的内容有助于视图在返回时呈现自身。异步问题?大概但它似乎正在工作。

视图本身中是否有代码可能正在执行此操作?我不知道是否正确理解了您的问题,但视图仅包含对ViewModel和表单的引用,没有其他内容。我没有从视图调用TTS方法。返回
view()
是一个
ActionResult
。如果类型不匹配,这将是编译器错误,而不是运行时错误。我尝试输入ViewResult,由于错误,我不得不注释掉方法的重定向部分。它编译得很好,但仍然没有重定向到视图。这种情况是否会由于本地发生的文件io而发生?尽管如此,文件io发生在远离项目文件夹的文件夹中。TTS部件和返回视图之间是否存在同步问题?因为就像我之前提到的,如果我注释掉TTS保存部分,它返回的视图很好。啊,对不起,大卫是对的。您能否从TTS提交中获取返回值并在此处分配它(在转到视图之前)?在TTS helper类中,我将返回值输入到实体中,然后将返回ID返回到视图模型(调用TTS helper的位置),然后再返回到视图模型中,返回的ID也通过EF输入数据库。我想把它像这样分开。我试着把TTS代码和我的视图模型放在同一个类文件中,但还是不起作用。它与TTS方法有关,导致它不返回视图。但是TTS代码工作正常,它完成了它的工作,没有错误。