Я написал один partialview для action method.if, давая полный путь этого частичного представления в методе действий, который он собирается, но напрямую возвращает view(), который не возвращает view.why, запрашивая полный путь представления? пожалуйста, дай мне знать.
[HttpPost]
public ActionResult SearchResults(FormCollection collection)
{
return View("/Areas/Admin/Views/Search/ShowResults.ascx",vm); --it working
//return View(); --it not returning view.why?
}
маршрут:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { area = "", controller = "home", action = "index", id = "" }, // Parameter defaults
new string[] { "MVC.Web.Controllers" }
);
Причина, по которой это происходит, заключается в том, что у вас нет представления под названием SearchResults
(имя вашего действия). Представление, которое вы возвращаете, - ShowResults
. Поскольку вы используете представление, не названное так же, как имя действительного действия, вам нужно его указать. Кроме того, поскольку вы возвращаете частичное представление, хорошая практика сказать MVC, что вы это делаете, используя return PartialView
метод return PartialView
[HttpPost]
public ActionResult SearchResults(FormCollection collection)
{
return PartialView("ShowResults", vm);
}
Это будет работать до тех пор, пока представление ShowResults
находится в каталоге представления с тем же именем, что и контроллер, или находится в общей папке вида. Если представление не находится в одном из этих местоположений, вам нужно будет указать полный путь к представлению, поскольку механизм просмотра не сможет найти его самостоятельно.
[HttpPost]
public ActionResult SearchResults(FormCollection collection)
{
return PartialView("~/Areas/Admin/Views/Search/ShowResults.ascx",vm);
}
Кроме того, при использовании полных путей обязательно указывайте символ ~
как это говорит о том, что IIS/.NET начинает искать корень вашего приложения, а не корень сайта. Теперь это может работать, но если вы переместите свой сайт в виртуальный каталог или что-то не в корне домена, он будет терпеть неудачу.