小编chr*_*isb的帖子

ASP.NET MVC - Html.DropDownList - 未通过ViewData.Model设置的值

刚刚开始玩ASP.NET MVC并且偶然发现了以下情况.感觉很像一个bug,但如果不是,一个解释将不胜感激:)

视图包含非常基本的东西

<%=Html.DropDownList("MyList", ViewData["MyListItems"] as SelectList)%>
<%=Html.TextBox("MyTextBox")%>
Run Code Online (Sandbox Code Playgroud)

不使用模型时,值和所选项目按预期设置:

//works fine
public ActionResult MyAction(){
  ViewData["MyListItems"] = new SelectList(items, "Value", "Text"); //items is an ienumerable of {Value="XXX", Text="YYY"}

  ViewData["MyList"] = "XXX"; //set the selected item to be the one with value 'XXX'
  ViewData["MyTextBox"] = "ABC"; //sets textbox value to 'ABC'

  return View();
}
Run Code Online (Sandbox Code Playgroud)

但是当尝试通过模型加载时,文本框的值设置为预期,但下拉列表不会获得选定的项目集.

//doesnt work
public ActionResult MyAction(){
  ViewData["MyListItems"] = new SelectList(items, "Value", "Text"); //items is an ienumerable of {Value="XXX", Text="YYY"}

  var model = new {
    MyList = "XXX", //set …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc html-helper

17
推荐指数
2
解决办法
8万
查看次数

System.Web.Mvc.FilterProviderCollection.GetFilters中的NullReferenceException

我有一个在Windows 2008 R2(IIS 7.5)上运行的MVC 5应用程序(.NET 4.5.1)

运行负载测试时,会定期抛出以下异常.不幸的是,我无法在本地重现并且相当困难,所以我希望社区可以有更多的想法.(更新:现在能够在负载下重现)

查看FilterProviderCollection.GetFilters的源代码表明它可能是依赖项解析器 - 但是没有更多信息,我不愿意简单地替换库.目前它使用的是SimpleInjector.

如果是这种情况,我的猜测是由应用程序池回收引起的,但是无法确认这一点(在应用程序池中启用回收的所有原因的记录没有给我带来任何帮助)

经过多次搜索,我确实找到了一些可能是Glimpse的引用.我已经证实情况并非如此.我还剥离并重建了这个项目,以帮助人们获得信心,不仅仅是nuget-package升级怪异.

任何关于可能导致它的建议,或者我如何添加额外的日志以获取更多信息的任何建议将不胜感激.谢谢.

Exception information: 
    Exception type: NullReferenceException 
    Exception message: Object reference not set to an instance of an object.
   at System.Web.Mvc.FilterProviderCollection.GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
   at System.Web.Mvc.ControllerActionInvoker.GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state)
   at System.Web.Mvc.Controller.<BeginExecuteCore>b__1c(AsyncCallback asyncCallback, Object asyncState, ExecuteCoreState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
   at System.Web.Mvc.Async.AsyncResultWrapper.Begin[TState](AsyncCallback callback, Object callbackState, BeginInvokeDelegate`1 beginDelegate, EndInvokeVoidDelegate`1 endDelegate, TState …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc simple-injector

7
推荐指数
1
解决办法
1351
查看次数

标签 统计

asp.net-mvc ×2

c# ×1

html-helper ×1

simple-injector ×1