Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 部分视图中的NullReferenceException,但不在“中”;等价物;看法_Asp.net Mvc 3_Razor_Partial Views - Fatal编程技术网

Asp.net mvc 3 部分视图中的NullReferenceException,但不在“中”;等价物;看法

Asp.net mvc 3 部分视图中的NullReferenceException,但不在“中”;等价物;看法,asp.net-mvc-3,razor,partial-views,Asp.net Mvc 3,Razor,Partial Views,我是MVC 3/Razor的新手,在一个简单的网站上学习基础知识。为此,我创建了一个简单视图,在/Home/SignedInAs页面上呈现DropDownList 我家控制器中的逻辑是: public class HomeController : Controller { public ActionResult SignedInAs() { SignedInAsViewModel siavm = new SignedInAsViewModel(); s

我是MVC 3/Razor的新手,在一个简单的网站上学习基础知识。为此,我创建了一个简单视图,在/Home/SignedInAs页面上呈现DropDownList

我家控制器中的逻辑是:

public class HomeController : Controller  
{  
  public ActionResult SignedInAs()  
  {  
    SignedInAsViewModel siavm = new SignedInAsViewModel();  
    siavm.SignedInAsOptions = db.GetSignedInAsOptions();  
    return View(siavm);
  }  
}  
其中SignedAsViewModel是一个简单的:

public class SignedInAsViewModel  
{  
  public SignedInAsViewModel()  
  {  
    this.SignedInAsOptions = new List<SignedInAs>();  
  }  

  public IEnumerable<SignedInAs> SignedInAsOptions { get; set; }  
}
选择列表的呈现方式与我在/Home/SignedInAs页面上的预期完全相同

我真正想做的是在每个页面的顶部呈现DropDownList。因此,我创建了一个局部视图,_signedAspatial:

@model myMVCApp.Views.SignedInAsViewModel
@if (Request.IsAuthenticated)
{   
  <text><div>@Html.DropDownList("ddlSignedInAs", new SelectList(Model.SignedInAsOptions, "ID", "Name", selectedValue))</div></text>
}  
(我在这里也尝试了
返回视图(siavm)
。)

在我所有页面使用的my_Layout.cshtml中:

@model myMVCApp.Views.SignedInAsViewModel  
...  
@Html.DropDownList("ddlSignedInAs", new SelectList(Model.SignedInAsOptions, "ID", "Name", selectedValue))
...
@Html.Partial("_SignedInAsPartial")  
现在尝试加载任何页面都会导致NullReferenceException,并且可视化调试器会在_signedinaspatial.cshtml处停止

断点永远不会在SignedAsController中被命中


我显然不明白这里有什么,我已经读了所有我能找到的东西。但我想不出来。为什么选择列表在页面视图上呈现良好,而在部分视图上呈现不好?

您必须将模型传递到部分视图,或者可以使用Html.RenderAction,这需要控制器操作来支持该视图。

您必须将模型传递到部分视图,或者可以使用Html.RenderAction,这将需要控制器操作来支持该视图。

谢谢Satjinder。在反复讨论这个问题之后,我意识到我在MVC的基础知识方面没有足够的扎实基础,所以我求助于阅读一本真正的书,而不是试图拼凑各种帖子和在线演练。谢谢Satjinder。在反复讨论这一点之后,我意识到我在MVC的基础知识方面没有足够的扎实基础,所以我求助于阅读一本真正的书,而不是试图拼凑各种帖子和在线演练。
@Html.Partial("_SignedInAsPartial")