我想通过使用MVC的部分视图中的表单上载图像。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);
}
}
我也尝试过,既没有工作也没有工作 – 2010-05-19 04:19:40
我刚刚尝试通过返回ActionResult,但页仍然去“Item/ImageUpload”与“路由表中没有路由匹配提供的值”错误,因为我做了不要在我的项目中创建这个视图。 – 2010-05-19 04:24:32