MVC:在局部视图中上传图像,路由问题

时间:2010-05-19 04:08:43

标签: asp.net-mvc routing

我正在尝试通过使用MVC在局部视图中的表单上传图像。

查看代码:

<form action="/Item/ImageUpload" method="post" enctype="multipart/form-data">
   <%= Html.TextBox("ItemId",Model.ItemId) %>
   <input type="file" name="file" id="file"  />
   <input type="submit" value="Add" />
</form>

行动守则:

public void ImageUpload(string ItemId, HttpPostedFileBase file)
{
// upload image
// Add Image record to database
// Associate Image record to Item record
//Go back to existing view where the partial view sits
RedirectToAction("Details/"+ItemId);
}

图片上传成功

所有数据操作都按预期工作

然而,不是重定向以查看“Item / Details / id”,而是转到“/ Item / ImageUpload”

我尝试了几种不同的方法,包括使用jsonResultAction,但是在同样的结果中都失败了。

我做错了哪里,有什么想法吗?提前谢谢

修改

我刚刚意识到代码渲染的所有路由都无法正常工作。

例如:[ <%= Html.ActionLink("Log Off", "LogOff", "Account") %> ] 而不是呈现<a href="/Account/LogOff">Home</a>,而是呈现<a href="">Home</a>

然而,所有硬编码的路线都在工作。

我在哪里打破它?我无法恢复它的麻烦。

Global.asax.cs的代码

public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");


            //routes.MapRoute(
            //   "ImageResize",
            //   "{controller}/{action}/{id}/{value}",
            //   new { controller = "Image", action = "ShowImage", id = "", value = "" }); 

            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}/",                           // URL with parameters
                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
            );


        }

        protected void Application_Start()
        {
            RegisterRoutes(RouteTable.Routes);
        }


    }

2 个答案:

答案 0 :(得分:1)

我认为您需要使用return RedirectToAction("Deati....

如果您已经有关键字return,那么请将其添加到您的问题中,我将删除此答案

修改

在这种情况下,我会写一条路线,让你可以说return RedirectToRoute("name", model);

之类的东西

编辑2

我现在所能提供的只是来自自动生成的帐户控制器。

public ActionResult LogOff()
{

    FormsAuth.SignOut();

    return RedirectToAction("Index", "Home");
}

查看您提供的代码,我看到public void ImageUpload而不是public ActionResult ImageUpload

答案 1 :(得分:0)

RedirectToAction("Details/"+ItemId);

这应该是

return RedirectToAction("Details", new {Id = ItemId});

你不要像这样只向RedirectToAction添加内容。 它使用反射来获取要重定向到的方法的参数。