1

再会,

我有一个 ASP.net MVC 应用程序,它需要将文件上传到 Amazon S3 并取得进展。我发现了一个名为 Flajaxian 的简洁控件,它可以很好地完成这项工作。问题是现在我想将一行数据插入到跟踪上传的数据库中。如果您查看下面的代码,该控件有一个 FileUploader1_ConfirmUpload 事件,该事件在上传完成后触发。Url.Action("Upload", "TracksController") 没有做我想做的事,它触发了 TrackController 控制器中的上传操作。这是我第一次使用 MVC,所以我希望有一个简单的解决方案。

我最初有一个提交按钮来执行这样的代码上传<div class="submitBtnDiv"><input type="submit" value="Submit" class="submitBtn" id="trackAdd" /></div>。但现在上传是异步的,所以我想做同样的回发

感谢所有花时间阅读此问题的人,更感谢那些试图解决它的人。

 <div class="contentsAcc"><form id="form2" runat="server" style="width:400px">
                <script runat="server">
                    private void FileUploader1_FileNameDetermining(object sender, FileNameDeterminingEventArgs e)
                    {
                        e.FileName = SessionWrapper.PersonId.ToString() + "_" + e.FileName;
                    }
                </script>
                <script runat="server">
                    private void FileUploader1_ConfirmUpload(object sender, ConfirmUploadEventArgs e)
                    {
                        Url.Action("Upload", "TracksController");                            
                    }
                </script>
                    <fjx:FileUploader ID="FileUploader1" runat="server">
                        <Adapters>
                            <fjx:DirectAmazonUploader   OnFileNameDetermining="FileUploader1_FileNameDetermining" OnConfirmUpload="FileUploader1_ConfirmUpload"
                                AccessKey="WebConfig:AmazonAccessKey" 
                                SecretKey="WebConfig:AmazonSecretKey"
                                BucketName="tracksupload" />
                        </Adapters>
                    </fjx:FileUploader>

        </form></div>

好的,所以我昨天尝试稍微改变一下我的方法。我不想尝试触发 TracksController 的动作,而是将该动作代码移到 Confirm_Upload 事件中。但现在我仍然需要获取文本框的值。因为 MVC 不记得状态,所以这很困难。这是文本框。它们与上面的代码在同一页面上。

 <label for="BandName">Artist</label> 
       <%=Html.TextBox("Artists") %><%:Html.ValidationMessage("Artist","*")%>
        <div class="clearfix">
        </div>
        <label for="SongName">Song Title
        </label>
          <%=Html.TextBox("SongName") %><%:Html.ValidationMessage("SongName","*")%>
        <div class="clearfix">
        </div>

是否可以提取文本框的值并将其发送到发生在服务器端的 Confirm_Upload 事件?如果没有服务器代码,那么可能是 JavaScript 客户端?

我使用的上传控件是唯一一个可以完全满足我的要求,但它是 Web 表单,该站点是 MVC。所以我在 mvc 页面上有一个 Web 表单控件。我想使用 MVC 文本框值并将其传递给 Web 表单控件进行处理。

4

1 回答 1

1

Url.Action 只返回一个 URI。您是否尝试重定向?

有时 WebForms 事件在 MVC 中工作,所以我看看它是否像您需要重定向一样简单。


您的主要问题是您试图在看起来像 MVC 页面的地方使用 WebForms 代码。这主要是不兼容的,您需要自己连接 javascript 或直接在您的视图中使用许多 javascript 文件上传控件中的另一个。

我不能推荐任何东西,因为我不熟悉 S3 上传。也许另一个 SO 用户可以回答得更好。

于 2011-04-13T14:34:03.613 回答