我有部分视图在页面上呈现一个控件,此控件适用于long
的某些字段。这就是我定义它的方式:
@model long
@(Html.Kendo().MultiSelectFor(x => Model)
我正试图在其他视图中渲染这个局部视图,例如:
@Html.Partial("MultiSelect/partialView", @Model.longField)
这给了我一个Object reference not set to an instance of an object
例外。
请指导我实现此目的的正确语法。
答案 0 :(得分:2)
检查@Model
是否为null
。如果是,请尝试创建模型的对象以传递给视图。您不能像以前那样访问null对象的属性。
var model= new YourViewModel();
return View(model);
答案 1 :(得分:1)
我可以想到有两件事情在这里被误解,但这取决于你的解决方案。
检查部分视图名称的路径。如果MultiSelect/partialView
文件夹和MultiSelect
与您呼叫的partialView.cshtml
视图位于同一文件夹中,则只能编写Html.Partial(...)
。也就是说,您的文件夹结构是这样的:
Views
| YourViewFolder
YourView.cshtml
| MultiSelect folder
partialView.cshtml
换句话说,在代码中,指定当前视图的相对路径。 (请注意,您的部分视图也可以在/Views/Shared
中,Razor也会在这种情况下找到它。)如果您的fodler结构不像上面那样(或者不在/Views/Shared/
中,那么您必须指定相对于项目的路径,如下所示:/Views/.../MultiSelect/partialView
其中...
是Views
和MultiSelect
之间的任何目录。
你应该检查的其他事情是@(Html.Kendo().MultiSelectFor(x => Model)
行从它的末尾缺少右边的)
,我不确定这是否是复制粘贴错误或者它是这样的在你看来。