2013-02-28 102 views
0

我不会有一个视图叫做Test。但是,Home控制器Test中有一个方法未创建的视图会显示

一切工作正常,Test方法得到执行并重定向到代码中给出的Index视图。但是,在浏览器中,URL是../Home/Test而不是../Home/Index。我没有一个名为Test的视图,为什么会显示?我不希望这个URL在浏览器中显示。我该如何解决这个问题?

查看:

@using (Html.BeginForm("Test", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 

    <input type="file" name="file" /> 
    ..// Other code 
} 

C#

public ActionResult Test(HttpPostedFileBase f) 
     { 
      var m = new HomeModel(); 
      ..// Other code goes here 
      return View("../Home/Index", m); // Will be returning the Index View 
     } 
+1

尝试'返回视图(“指数”,男);' – 2013-02-28 09:21:01

+0

谢谢你,我用你的方法 – 2013-02-28 09:54:30

回答

0

在URL

“../Home/Test”

测试是行动因此是工作的罚款。

如果您不想显示该URL做,改名行动“试验”到“指数”,并更新其引用

和使用(可选)

return View("Index", m) 
-1

试试这个:

public ActionResult Test(HttpPostedFileBase f) 
{ 
var m = new HomeModel(); 
..// Other code goes here 
return RedirectToAction("Index"); 
} 
+0

在哪里模型传递? – 2013-02-28 09:23:56

0

如果您正在使用MVC标准设置,它不是视图,但该方法,这是显示在浏览器中。该方法默认返回视图(但是这是可选的)。

所以你需要做的就是将你的测试方法重新命名为索引并将[HttpPost]放置在它上面。

[HttpPost] 
    public ActionResult Index(HttpPostedFileBase f) 
     { 
      var m = new HomeModel(); 
      ..// Other code goes here 
      return View(m); 
     } 
0
return View("../Home/Index", m); 

这不会将您重定向到Index;它只会显示您的索引查看。如果你想浏览器自动从/Test将网址变更为/Index,你必须,而不是这样做:

return RedirectToAction("Index");