сохраняя имя представления и соответствующее имя метода контроллера разными

#c# #asp.net #asp.net-mvc #asp.net-mvc-4 #routes

Вопрос:

У меня есть метод контроллера с именем CreatePANApplication , но я создал страницу просмотра для этого с именем as PANApplication . Теперь, когда я пытаюсь вызвать этот метод с другой страницы просмотра, как:

 // dataTable code block
<td>    
    @Html.ActionLink("PAN Application", "CreatePANApplication", new { id = item.PANKey }, new { @class = "btn btn-warning" })
</td>
 

получение ошибки как:

 The view 'CreatePANApplication' or its master was not found or no view engine supports the searched locations.
 

Это означает, что я не должен менять имя своего контроллера и соответствующее название страницы просмотра. но много раз нам приходится менять имя страницы просмотра, что мы можем сделать в это время?

Класс контроллера:

 public ActionResult CreatePANApplication(int? id)
        {
            try
            {
                if (id == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }
                var data = (from z in db.PANModels
                            where z.PANKey == id
                            select z).ToList();

                if (data == null)
                {
                    return HttpNotFound();
                }
                return View(data);
            }
            catch (Exception)
            {

                throw;
            }
        }
 

Комментарии:

1. Как выглядит контроллер?

2. @AliK Я добавил метод контроллера.

3. Прямо сейчас ваш контроллер будет ожидать представление с именем CreatePANApplication.cshtml. Вы можете называть представление как угодно,например pagepan.cshtml, и вызывать его как возвращаемое представление(«имя страницы», данные).

4. что вы возвращаете из метода действия CreatePANApplication и есть ли у вас файл CreatePANApplication.cshtml в том же каталоге, что и контроллер?

Ответ №1:

если ваше представление все еще находится в папке, названной контроллером, или вы поместили свое представление в общую папку, вы можете использовать это

  return View("PANApplication", data);
 

но если ваше представление находится в другой папке, вам придется использовать полный путь

 return View(" ~/Views/folder/PANApplication.cshtml", data);