美好的一天,
我有一个ASP.net MVC应用程序需要上传文件到Amazon S3。我找到了一个叫做Flajaxian的简洁控件,可以很好地完成工作。问题是,现在我想将一行数据插入到跟踪上传的数据库中。如果查看下面的代码,控件会有一个FileUploader1_ConfirmUpload事件,该事件在上载完成后触发。 Url.Action(“上传”,“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的Action,而是想将Action代码移动到Confirm_Upload事件中。但现在我仍然需要获取文本框的值。因为MVC不记得状态,所以证明是困难的。这是textBoxes。它们与上面的代码在同一页面上。
<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窗体控件进行处理。
答案 0 :(得分:1)
Url.Action只返回一个URI。你想重定向吗?
有时WebForms事件在MVC中工作,所以我看到它是否像您需要重定向一样简单。
您的主要问题是您正试图在看起来像MVC页面的地方使用WebForms代码。这通常是不兼容的,您需要自己连接javascript或直接在视图中使用其他许多javascript文件上传控件。
我不能推荐任何东西,因为我不熟悉S3上传。也许其他SO用户可以更好地回答。