【问题标题】:keeping view name and corresponding controller method name different保持视图名称和相应的控制器方法名称不同
【发布时间】:2021-11-17 10:37:34
【问题描述】:

我有一个名为CreatePANApplication 的控制器方法,但我为此创建了一个名为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;
            }
        }

【问题讨论】:

  • 控制器长什么样子?
  • @AliK 我已经添加了控制器方法。
  • 现在您的控制器将期望名为 CreatePANApplication.cshtml 的视图。你可以调用任何你想要的视图,比如 pagepan.cshtml,调用是 return View("pagename",data)
  • 您从 CreatePANApplication 操作方法返回的内容以及您在与控制器相同的目录中有 CreatePANApplication.cshtml 文件吗?

标签: c# asp.net asp.net-mvc asp.net-mvc-4 routes


【解决方案1】:

如果您的视图仍在命名为控制器的文件夹中,或者您将视图放在共享文件夹中,则可以使用此

 return View("PANApplication", data);

但如果您的视图位于不同的文件夹中,则必须使用完整路径

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

【讨论】:

    猜你喜欢
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2012-11-04
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多