我正在尝试通过使用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);
}
}
答案 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添加内容。 它使用反射来获取要重定向到的方法的参数。