[英]Html Helper is not detecting the model in ASP.Net mvc3
In my current project i have to implement Dynamically loading tree menu from database in ASP.Net MVC3 Razor.The below structure shows my Menu Model. 在我当前的项目中,我必须在ASP.Net MVC3 Razor中实现从数据库动态加载树菜单。以下结构显示了我的菜单模型。 Level of Expertise in MVC3: Beginner
MVC3的专业水平:初学者
MenuId Name ParentMenuId OrderBy
MenuId名称ParentMenuId OrderBy
1 Item1 Null 1 2 Item2 Null 2 3 Item 2.1
1项目1空1 2项目2空2 3项目2.1
2 1 4 Item 2.1.1 3 1 5 Item 2.1.2 3 22 1 4项目2.1.1 3 1 5项目2.1.2 3 2
for that i have done the following things 1.Created Htmlhelper Contains static classes for Menus and sub menus, 2.Created Model for Menu, 3.added HtmlHelper namespace to views/web.config 为此,我已经做了以下事情:1.Created Htmlhelper包含菜单和子菜单的静态类,2.Created Menu的模型,3.将HtmlHelper命名空间添加到views / web.config
When we debug the code it shows an error that value cannot be null.But my db contains the data ie count =11 The error is due to menu counting to Zero.So how to solve this because menu table contains 11 rows of data? 当我们调试代码时,它显示了一个错误,即值不能为null。但是我的数据库包含数据,即count = 11该错误是由于菜单计数为零而导致的。由于菜单表包含11行数据,该如何解决?
Error 错误
Value cannot be null.
值不能为空。 Parameter name: source
参数名称:来源
Description: An unhandled exception occurred during the execution of the current web request.
说明:执行当前Web请求期间发生未处理的异常。 Please review the stack trace for more information about the error and where it originated in the code.
请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。
Exception Details: System.ArgumentNullException: Value cannot be null.
异常详细信息:System.ArgumentNullException:值不能为null。 Parameter name: source
参数名称:来源
Source Error:
源错误:
Line 14: { Line 15: string htmloutput=string.Empty;
第14行:{第15行:string htmloutput = string.Empty; Line 16: if (menu.Count() > 0) Line 17: { Line 18: htmloutput += "";
第16行:如果(menu.Count()> 0),则第17行:{第18行:htmloutput + =“”;
Source File: D:\\VS Projects\\Elixir\\Elixir\\HtmlHelpers\\HtmlHelperExtensions.cs Line: 16
源文件:D:\\ VS Projects \\ Elixir \\ Elixir \\ HtmlHelpers \\ HtmlHelperExtensions.cs行:16
Stack Trace:
堆栈跟踪:
[ArgumentNullException: Value cannot be null.
[ArgumentNullException:值不能为null。 Parameter name: source] System.Linq.Enumerable.Count(IEnumerable
1 source) +4164811
Elixir.HtmlHelpers.HtmlHelperExtensions.ParentMenus(HtmlHelper html, IEnumerable参数名称:source] System.Linq.Enumerable.Count(IEnumerable
1 source) +4164811
Elixir.HtmlHelpers.HtmlHelperExtensions.ParentMenus(HtmlHelper html, IEnumerable1 source) +4164811
Elixir.HtmlHelpers.HtmlHelperExtensions.ParentMenus(HtmlHelper html, IEnumerable1 source) +4164811
1 menu) in D:\\VS Projects\\Elixir\\Elixir\\HtmlHelpers\\HtmlHelperExtensions.cs:16
Elixir.HtmlHelpers.HtmlHelperExtensions.ParentMenus(HtmlHelper html, IEnumerableD:\\ VS Projects \\ Elixir \\ Elixir \\ HtmlHelpers \\ HtmlHelperExtensions.cs:16中的
1 source) +4164811
1菜单)
Elixir.HtmlHelpers.HtmlHelperExtensions.ParentMenus(HtmlHelper html, IEnumerable
ASP._Page_Views_Home_Menus_cshtml.Execute() in d:\\VS Projects\\Elixir\\Elixir\\Views\\Home\\Menus.cshtml:4d:\\ VS Projects \\ Elixir \\ Elixir \\ Views \\ Home \\ Menus.cshtml:4中的ASP._Page_Views_Home_Menus_cshtml.Execute()
System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +207System.Web.WebPages.WebPageBase.ExecutePageHierarchy()+207
System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +81System.Web.Mvc.WebViewPage.ExecutePageHierarchy()+81
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +88System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext,TextWriter writer,WebPageRenderingBase startPage)+88
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +220System.Web.Mvc.RazorView.RenderView(ViewContext viewContext,TextWriter编写器,对象实例)+220
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext,TextWriter writer)+115
System.Web.Mvc.HtmlHelper.RenderPartialInternal(String partialViewName, ViewDataDictionary viewData, Object model, TextWriter writer, ViewEngineCollection viewEngineCollection) +279System.Web.Mvc.HtmlHelper.RenderPartialInternal(字符串局部视图名,ViewDataDictionary viewData,对象模型,TextWriter作家,ViewEngineCollection viewEngineCollection)+279
System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData) +113 System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName) +31System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper,字符串partialViewName,对象模型,ViewDataDictionary viewData)+113 System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper,字符串partialViewName)+31
ASP._Page_Views_Home_Index_cshtml.b_ 2() in d:\\VS Projects\\Elixir\\Elixir\\Views\\Home\\Index.cshtml:16d:\\ VS Projects \\ Elixir \\ Elixir \\ Views \\ Home \\ Index.cshtml:16中的 ASP._Page_Views_Home_Index_cshtml.b_ 2()
System.Web.WebPages.<>c _DisplayClassb.b__9(TextWriter tw) +283 System.Web.WebPages.HelperResult.WriteTo(TextWriter writer) +12 System.Web.WebPages.WebPageBase.Write(HelperResult result) +67 ASP._Page_Views_Shared__LayoutUser_cshtml.Execute() in d:\\VS Projects\\Elixir\\Elixir\\Views\\Shared_LayoutUser.cshtml:136System.Web.WebPages。<> c _DisplayClassb.b__9(TextWriter tw)+283 System.Web.WebPages.HelperResult.WriteTo(TextWriter writer)+12 System.Web.WebPages.WebPageBase.Write(HelperResult结果)+67 ASP。 d:\\ VS Projects \\ Elixir \\ Elixir \\ Views \\ Shared_LayoutUser.cshtml:136中的_Page_Views_Shared__LayoutUser_cshtml.Execute()
System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +207System.Web.WebPages.WebPageBase.ExecutePageHierarchy()+207
System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +81System.Web.Mvc.WebViewPage.ExecutePageHierarchy()+81
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +88System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext,TextWriter writer,WebPageRenderingBase startPage)+88
System.Web.WebPages.<>c_ DisplayClass7.b _6(TextWriter writer) +102 System.Web.WebPages.HelperResult.WriteTo(TextWriter writer) +12 System.Web.WebPages.WebPageBase.Write(HelperResult result) +67System.Web.WebPages。<> c_ DisplayClass7.b _6(TextWriter writer)+102 System.Web.WebPages.HelperResult.WriteTo(TextWriter writer)+12 System.Web.WebPages.WebPageBase.Write(HelperResult结果)+67
System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action1 body) +66
System.Web.WebPages.WebPageBase.PopContext() +262
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +95
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +220
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +303 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +23 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, FuncSystem.Web.WebPages.WebPageBase.RenderSurrounding(字符串partialViewName,动作
1 body) +66
System.Web.WebPages.WebPageBase.PopContext() +262
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +95
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +220
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +303 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +23 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func1 body) +66
System.Web.WebPages.WebPageBase.PopContext() +262
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +95
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +220
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +303 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +23 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func1 body) +66
1 continuation) +260
System.Web.WebPages.WebPageBase.PopContext() +262
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +95
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +220
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +303 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +23 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func1 body) +66
1延续)+260
System.Web.WebPages.WebPageBase.PopContext() +262
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +95
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +220
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +303 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +23 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func
System.Web.Mvc.<>c_ DisplayClass1e.b _1b() +19 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList1 filters, ActionResult actionResult) +177
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343
System.Web.Mvc.Controller.ExecuteCore() +116
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
System.Web.Mvc.Async.<>c__DisplayClass8System.Web.Mvc。<> c_ DisplayClass1e.b _1b()+19 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext,IList
1 filters, ActionResult actionResult) +177
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343
System.Web.Mvc.Controller.ExecuteCore() +116
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
System.Web.Mvc.Async.<>c__DisplayClass81 filters, ActionResult actionResult) +177
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343
System.Web.Mvc.Controller.ExecuteCore() +116
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
System.Web.Mvc.Async.<>c__DisplayClass81 filters, ActionResult actionResult) +177
1.b__7(IAsyncResult ) +12 System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62 System.Web.Mvc.<>c _DisplayClasse.b_ d() +50
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343
System.Web.Mvc.Controller.ExecuteCore() +116
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
System.Web.Mvc.Async.<>c__DisplayClass81 filters, ActionResult actionResult) +177
1.b__7(IAsyncResult )+12 System.Web.Mvc.Async.WrappedAsyncResult`1.End()+ 62 System.Web.Mvc。<> c _DisplayClasse.b_ d( )+50
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343
System.Web.Mvc.Controller.ExecuteCore() +116
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
System.Web.Mvc.Async.<>c__DisplayClass8
System.Web.Mvc.SecurityUtil.b _0(Action f) +7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60System.Web.Mvc.SecurityUtil.b _0(动作f)+7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(动作)+22 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+60
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult结果)+9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8862381 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+8862381 System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值且已完成)+184
HTML HELPER CODE HTML帮助代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using Elixir.Models;
namespace Elixir.HtmlHelpers
{
public static class HtmlHelperExtensions
{
public static string ParentMenus(this HtmlHelper html,IEnumerable<Menus> menu)
{
string htmloutput=string.Empty;
if (menu.Count() > 0)
{
htmloutput += "<ul class='side-navigation accordion' id='nav-accordion'>";
var MainMenu = from mainMenu in menu where mainMenu.MainMenuId == null orderby mainMenu.MenuOrder select mainMenu;
foreach(Menus m in MainMenu)
{
htmloutput += "<li>";
htmloutput += "<li><i class='icon-home'>";
htmloutput += LinkExtensions.ActionLink(html, m.LinkName, m.ActionName, m.ControllerName);
htmloutput += "</li>";
htmloutput += "</li></i>";
}
htmloutput += "</ul>";
}
return htmloutput;
}
public static string SubMenu(this HtmlHelper html, IEnumerable<Menus> SubMenu, int MenuId)
{
string htmlOutput = string.Empty;
if (SubMenu.Count() > 0)
{
htmlOutput += "<ul class='side-navigation accordion' id='nav-accordion'>";
var subMenu = from SMenu in SubMenu where SMenu.MainMenuId == MenuId orderby SMenu.MenuOrder select SMenu;
foreach (Menus m in subMenu)
{
htmlOutput += "<li>";
htmlOutput += "<li><i class='icon-home'>";
htmlOutput += LinkExtensions.ActionLink(html, m.LinkName, m.ActionName, m.ControllerName);
htmlOutput += "</li>";
htmlOutput += "</li></i>";
}
htmlOutput += "</ul>";
}
return htmlOutput;
}
}
}
Controller Code 控制器代码
public ActionResult Menus()
{
var MMenu = ment.Menu.ToList();
return PartialView(MMenu);
}
Menu.cshtml ( Partial Layout) Menu.cshtml(部分布局)
@model IEnumerable<Elixir.Models.Menus>
<div>
@Html.Raw(@Html.ParentMenus(Model))
</div>
Index Page 索引页
@{
ViewBag.Title = "Elixir ERP V1.0 Beta";
Layout = "~/Views/Shared/_LayoutUser.cshtml";
}
<div class="main-container">
<div class="main-wrapper">
<div class="scroll-top">
<a href="#" class="tip-top" title="Go Top"><i class="icon-arrow-up"></i></a>
</div>
<div class="left-bar merge-left">
<!-- SEARCH BAR -->
<!-- LEFT NAV -->
@section leftnav{
<div class="left-nav">
@Html.Partial("Menus");
</div>
}
</div>
</div>
<div class="container">
</div>
</div>
Menu Model 菜单型号
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Elixir.Models
{
[Table("tbl_Menus")]
public class Menus
{
[Key]
public int MenuId { get; set; }
public string UserName { get; set; }
public string MenuName { get; set; }
public int MenuOrder { get; set; }
public int? MainMenuId { get; set; }
public string LinkName { get; set; }
public string ActionName { get; set; }
public string ControllerName { get; set; }
}
}
Error 错误
Is your Menu.cshtml supposed to be Menus.cshtml ? 您的Menu.cshtml应该是Menus.cshtml吗?
If so, you're calling it as a partial on this line: 如果是这样,您可以在此行中将其作为部分调用:
@Html.Partial("Menus");
But you're not giving it a model. 但是您没有给它一个模型。
Try using 尝试使用
@Html.Action("Menus")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.