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