我对部分视图和相关视图模型有一个特殊的问题。 这就是控制器中的相关功能:
using MyProject.ViewModels;
[ChildActionOnly]
public PartialViewResult ShowMyView(int id)
{
return PartialView(new MyModel() { ModelID = id });
}
然后我有一个定义如下的视图模型:
namespace MyProject.ViewModels
{
[Bind(Exclude = "ModelID")]
public class MyModel: IValidatableObject
{
public MyModel()
{
Count = 1;
}
[Required]
[HiddenInput(DisplayValue = false)]
public int ModelID { get; set; }
[Required]
[Range(1, 9999)]
public int Count { get; set; }
public IEnumerable<ValidationResult> Validate(
ValidationContext validationContext)
{
if (ModelID <= 0)
yield return new ValidationResult("Model ID missing",
new[] { "ModelID" });
if (Count <= 0)
yield return new ValidationResult("Count cannot be zero",
new[] { "Count" });
}
}
}
我在Views / Shared中定义了一个名为ShowMyView.cshtml的视图。 奇怪的是,当我将其定义为
时@inherits WebViewPage
它工作正常(显示视图),但是当我定义实际模型时
@inherits WebViewPage<MyProject.ViewModels.MyModel>
它不会显示视图并向我提供无法找到视图的错误(包含它查找的位置列表,包括确实存在的Views / Shared / ShowMyView.cshtml路径)。
这似乎适用于我在项目中使用的任何模型类。关于我在这里做错了什么的线索?
答案 0 :(得分:1)
尝试更换:
@inherits WebViewPage<MyProject.ViewModels.MyModel>
使用:
@model MyProject.ViewModels.MyModel
位于ShowMyView.cshtml
视图的顶部。通常这两个应该是等价的,但你永远不会知道。还要确保在渲染此子操作时传递id参数:
@Html.Action("ShowMyView", "SomeController", new { id = "123" })