为了解释,我的初始设置如下:
控制器:
Library => Controllers => ParametersController.cs
Library => Controllers => ReaderLevelController.cs
Library => Controllers => ResourceTypeController.cs
意见:
Library => Views => Parameters => Index.cshtml
Library => Views => ReaderLevel => Index.cshtml
Library => Views => ResourceType => Index.cshtml
每个视图都引用了相应的模型,如下所示:
@model IEnumerable<Library.DAL.PrmTbl_Level>
每个控制器都包含一个ActionResult
for Index(),一些FormCollections
而不是其他。屏幕显示正常,拉取、编辑和更新数据库没有问题。
我想将我的视图更改为更具描述性的层次结构,因此像这样移动了我的视图文件:
意见:
Library => Views => Parameters => Index.cshtml
Library => Views => Parameters => ReaderLevel => Index.cshtml
Library => Views => Parameters => ResourceType => Index.cshtml
然后我更新了ParametersController.cs
文件以反映现在将指向它的新 ActionResults,它是“父”文件:
public ActionResult ResourceType() { return View("ResourceType/Index"); }
但是,现在新的“子”屏幕(在此示例中为 ReaderLevel 和 ResourceType)不会显示,因为当 foreach 循环尝试通过其相关模型运行时会引发错误 - 现在返回为 null。我对更改视图文件的位置如何改变数据访问的可行性感到困惑(因为在我看来,模型是通过@model IEnumerable<Library.DAL.PrmTbl_Level>
不改变的 ab 路径填充的)。
有人可以解释更改视图的位置如何影响其对其控制器和模型的访问吗?
编辑
我当前的设置(文件结构如上):
参数控制器
public ActionResult Index() {
ViewBag.Title = "Parameters";
return View();
}
public ActionResult ResourceType() {
return RedirectToAction("ResourceType");
}
这给了我适当的 url,但是“Firefox 检测到服务器正在以永远不会完成的方式重定向对该地址的请求。” 使用 RedirectToAction"ResourceType","Index"
解析为 url '/Index/ResourceType' 并且找不到资源。