将显示未创建的视图

时间:2013-02-28 09:18:45

标签: c# asp.net-mvc

我没有有一个名为Test的视图。但是,{strong> Home控制器中有一个方法,名为Test

一切正常,Test方法被执行并重定向到代码中给出的Index视图。但是,在浏览器中,网址为../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
        }

4 个答案:

答案 0 :(得分:0)

如果您使用的是MVC的标准设置,则不是浏览器中显示的View,而是The Method。默认情况下,该方法返回视图(但这是可选的)。

所以你需要做的是将Test Method重命名为Index并将[HttpPost]放在它上面。

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

答案 1 :(得分:0)

在网址

  

“../主页/测试”

测试就是行动,因此工作正常。

如果您不希望显示此URL,请将操作“测试”重命名为“索引”并更新其参考

并使用(可选)

return View("Index", m)

答案 2 :(得分:0)

return View("../Home/Index", m);

这不会将您重定向到Index;它只会显示您的索引视图。如果您希望浏览器自动将您的网址从/Test更改为/Index,则必须执行以下操作:

return RedirectToAction("Index");

答案 3 :(得分:-1)

试试这个:

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