如何将参数传递给局部视图:对象引用未设置为对象的实例

时间:2015-06-29 07:02:04

标签: asp.net-mvc razor partial-views

我有部分视图在页面上呈现一个控件,此控件适用于long的某些字段。这就是我定义它的方式:

@model long
@(Html.Kendo().MultiSelectFor(x => Model)

我正试图在其他视图中渲染这个局部视图,例如:

@Html.Partial("MultiSelect/partialView", @Model.longField)

这给了我一个Object reference not set to an instance of an object例外。

请指导我实现此目的的正确语法。

2 个答案:

答案 0 :(得分:2)

检查@Model是否为null。如果是,请尝试创建模型的对象以传递给视图。您不能像以前那样访问null对象的属性。

 var model= new YourViewModel();
 return View(model);

答案 1 :(得分:1)

我可以想到有两件事情在这里被误解,但这取决于你的解决方案。

  1. 检查部分视图名称的路径。如果MultiSelect/partialView文件夹和MultiSelect与您呼叫的partialView.cshtml视图位于同一文件夹中,则只能编写Html.Partial(...)。也就是说,您的文件夹结构是这样的:

    Views
     | YourViewFolder
         YourView.cshtml
         | MultiSelect folder
            partialView.cshtml
    
  2. 换句话说,在代码中,指定当前视图的相对路径。 (请注意,您的部分视图也可以在/Views/Shared中,Razor也会在这种情况下找到它。)如果您的fodler结构不像上面那样(或者不在/Views/Shared/中,那么您必须指定相对于项目的路径,如下所示:/Views/.../MultiSelect/partialView其中...ViewsMultiSelect之间的任何目录。

    你应该检查的其他事情是@(Html.Kendo().MultiSelectFor(x => Model)行从它的末尾缺少右边的),我不确定这是否是复制粘贴错误或者它是这样的在你看来。