从另一个视图获取输入文件

时间:2015-04-29 08:32:22

标签: asp.net-mvc angularjs razor

我们将RazorMVCAngularJs一起使用。

我有一个表单,您可以从中选择图像。从那里您可以选择使用提交按钮上传图像,或者您可以转到新视图以添加有关图像的更多信息,然后上传。

我的问题是如何将所选图像发送到新视图,添加我的额外数据,然后上传图像?

这是视图#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修复的。任何人吗?

1 个答案:

答案 0 :(得分:0)

Razor是一个服务器端的东西。 Angular是客户端的事情。所以,问题是......按下&#34;添加更多信息&#34;按钮使服务器往返?它没有必要这样做,在这种情况下,你的解决方案应该基于Angular。

所以,我认为您应该创建一个新的Angular视图和新的Angular控制器来代表您的&#34;添加更多信息&#34;视图。要将信息从原始控制器传递到新控制器,建议的方法是定义一个可以注入两个控制器的Angular服务。搜索&#34; angular如何将信息从一个控制器传递到另一个控制器&#34;了解更多细节。