Представление "Поиск" или его мастер не был найден, или ни один механизм просмотра не поддерживает искомые местоположения.
public ActionResult Search(string name)
{
if (string.IsNullOrWhiteSpace(name))
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var movie = db.Movies.Where(x => x.Title.Contains(name)).FirstOrDefault();
if (movie == null)
{
return HttpNotFound();
}
return View(movie);
}
Я пытаюсь создать параметр поиска, чтобы извлечь данные из таблицы, которую я создал в C#. Запуск приложения приводит меня к localhost: xxxx, который показывает мне всю таблицу. Я хочу, чтобы localhost: xxxx / movies / search / man вытащил мои данные с этой строкой внутри.
Вот RouteConfig.cs
routes.MapRoute(
name: "Search",
url: "movies/search/{name}",
defaults: new { controller = "Movies", action = "Search", name = UrlParameter.Optional }
);
Стек вызовов:
[InvalidOperationException: The view 'Search' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Movies/Search.aspx
~/Views/Movies/Search.ascx
~/Views/Shared/Search.aspx
~/Views/Shared/Search.ascx
~/Views/Movies/Search.cshtml
~/Views/Movies/Search.vbhtml
~/Views/Shared/Search.cshtml
~/Views/Shared/Search.vbhtml]
System.Web.Mvc.ViewResult.FindView(ControllerContext context) +382
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +116
System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +56
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +420
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +52
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +173
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36
System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9748665
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +48
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +159
2 ответа
Похоже, что у вас нет представления для этого для рендеринга.
Чтобы добавить представление (при условии, что вы используете ASP-MVC, нужно перейти в папку представлений, добавить папку "Фильмы" (если она не существует) и добавить файл Search.cshtml в эту папку, вот пример:
Этот ответ является ответом на предоставленную вами трассировку стека, это не похоже на заголовок - чтение трассировки стека не похоже на то, что Linq является проблемой здесь.
Надеюсь это поможет
public ActionResult Search(имя строки) {
if (string.IsNullOrWhiteSpace(name))
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var movies = db.Movies.Where(x => x.Title.Contains(name)).ToList();
if (movies == null)
{
return HttpNotFound();
}
return View("index", movies);
}
Спасибо за ваше понимание. Это была проблема с видом. Я ни на что не указывал. Для моих целей я просто указал на то, что я использую в качестве индекса.