我们将Razor
与MVC
和AngularJs
一起使用。
我有一个表单,您可以从中选择图像。从那里您可以选择使用提交按钮上传图像,或者您可以转到新视图以添加有关图像的更多信息,然后上传。
我的问题是如何将所选图像发送到新视图,添加我的额外数据,然后上传图像?
这是视图#1的一部分:
@using (Html.BeginForm("UploadStuff", "someController", FormMethod.Post, new { enctype = "multipart/form-data" })){
//This will send you to the addMoreInfo view and not upload the file
<input type="button" ui-sref="someController.addMoreInfo" value="Add more info" />
//This will upload the selected file to the server
<input type="submit" value="Save and close" />
}
控制器: 这将保存所选文件并在提交时正常工作。
[HttpPost]
public ActionResult UploadStuff(HttpPostedFileBase imageUpload)
{
if (imageUpload != null)
{
if (imageUpload.ContentLength > 0)
{
string filePath = Path.Combine(HttpContext.Server.MapPath("~/Content/upload"),
Path.GetFileName(imageUpload.FileName));
imageUpload.SaveAs(filePath);
return RedirectToAction("toSomeView", "someController");
}
}
return View();
}
查看#2 - addMoreInfo视图:
<h2>Add more info</h2>
Title:<br/>
<input type="text"/><br/>
<input type="button" value="Save"/>
不要担心moreInfo部分。我只是对如何从视图#1获取所选文件感兴趣并通过按下视图#2中的保存按钮来保存它。我是否也可以在这里添加一个BeginForm并发布到服务器?但是后来我需要视图#1中的seleced文件;)我知道在我的例子中没有太多的Angular代码,但是我们也使用它,如果你有一些技巧可以用角度修复这个问题;前进。但我猜这是用Razor修复的。任何人吗?
答案 0 :(得分:0)
Razor是一个服务器端的东西。 Angular是客户端的事情。所以,问题是......按下&#34;添加更多信息&#34;按钮使服务器往返?它没有必要这样做,在这种情况下,你的解决方案应该基于Angular。
所以,我认为您应该创建一个新的Angular视图和新的Angular控制器来代表您的&#34;添加更多信息&#34;视图。要将信息从原始控制器传递到新控制器,建议的方法是定义一个可以注入两个控制器的Angular服务。搜索&#34; angular如何将信息从一个控制器传递到另一个控制器&#34;了解更多细节。