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
        }
4

4 回答 4

0

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

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

    [HttpPost]
    public ActionResult Index(HttpPostedFileBase f)
        {
            var m = new HomeModel();
            ..// Other code goes here
            return View(m);
        }
于 2013-02-28T09:24:28.357 回答
0

在网址中

“../首页/测试”

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

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

并使用(可选)

return View("Index", m)
于 2013-02-28T09:28:04.390 回答
0
return View("../Home/Index", m);

这不会将您重定向到Index; 它只会显示您的索引视图。如果您希望浏览器自动将您的 URL 从更改/Test/Index您必须这样做:

return RedirectToAction("Index");
于 2013-02-28T09:49:29.770 回答
-1

试试这个:

public ActionResult Test(HttpPostedFileBase f)
{
 var m = new HomeModel();
 ..// Other code goes here
 return RedirectToAction("Index");
}
于 2013-02-28T09:22:11.960 回答