Member 12029579 Ответов: 0

Я получаю эту ошибку (system.web.mvc.webviewpage<tmodel>.model.get возвращает null.)


Home Controller 
public ActionResult Index()
{
    MenuModel ObjMenuModel = new MenuModel();
    ObjMenuModel.MainMenuModel = new List<MainMenu>();
    ObjMenuModel.MainMenuModel = GetMainMenu();
    ObjMenuModel.SubMenuModel = new List<SubMenu>();
    ObjMenuModel.SubMenuModel = GetSubMenu();

    return View(ObjMenuModel);
}

public List<MainMenu> GetMainMenu()
{
    List<MainMenu> ObjMainMenu = new List<MainMenu>();
    ObjMainMenu.Add(new MainMenu { ID = 1, MainMenuItem = "Home", MainMenuURL = "#" });
    ObjMainMenu.Add(new MainMenu { ID = 2, MainMenuItem = "System Setup", MainMenuURL = "#" });
    return ObjMainMenu;
}

public List<SubMenu> GetSubMenu()
{
    List<SubMenu> ObjSubMenu = new List<SubMenu>();
    ObjSubMenu.Add(new SubMenu { MainMenuID = 2, SubMenuItem = "Customer Information", SubMenuURL= "Employer" });
    ObjSubMenu.Add(new SubMenu { MainMenuID = 2, SubMenuItem = "Chart Of Accounts", SubMenuURL = "CompanyProfile" });
    return ObjSubMenu;
}

My Model
namespace Ron_Financial_Management_System.Models
{
    public class MenuModel
    {
        public List<MainMenu> MainMenuModel { get; set; }
        public List<SubMenu> SubMenuModel { get; set; }
    }

    public class MainMenu
    {
        public int ID;
        public string MainMenuItem;
        public string MainMenuURL;
    }

    public class SubMenu
    {
        public int MainMenuID;
        public string SubMenuItem;
        public string SubMenuURL;
    }
}


Мой вид макета
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title</title>
    <link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
    <link href="~/Content/bootstrap.min.css" rel="stylesheet" />
    <link rel="shortcut icon" type="image/x-icon" href="~/Ron.ico" />
    <script src="~/Scripts/modernizr-2.6.2.js"></script>
    <link href="~/Content/style.css" rel="stylesheet" type="text/css" />

    <script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
    <script src="~/Scripts/jquery-1.12.4.min.js"></script>
    <link href="~/Content/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
    @*<script src="@url.Content("~/Scripts/jquery-1.8.3.js")" type="text/javascript"></script>
        <script src="@url.Content("~/Scripts/jquery-ui.min.js")" type="text/javascript"></script>*@
    <script src="../../Scripts/script.js" type="text/javascript"></script>
    <script type="text/javascript">

        $(document).ready(function () {
            $("#accordian h3").click(function () {
                $("#accordian ul ul").slideUp();
                if (!$(this).next().is(":visible")) {
                    $(this).next().slideDown();
                }
            });
        });
    </script>
</head>
<body>
    @using System.Web.Optimization
    @model Ron_Financial_Management_System.Models.MenuModel
    @using (Html.BeginForm("_Layout", "Shared"))

    {
        <div id="wrapper">
            <div id="menuTop">
                <table>
                    <tr>
                        <td align="center"><a href="@Url.Action("Logout","Login")">Logged In As:</a> </td>
                        <td align="center"><a href="@Url.Action("Logout","Login")">Last Login:</a></td>
                        <td align="center"><a href="@Url.Action("Logout","Login")">Logout</a> </td>
                    </tr>
                </table>
            </div>

            <div id="menuLogo">
                Logo
            </div>
            <div id="banner">
                <img id="img_logo" alt="Logo" src="@Url.Content("~/Content/Images/RFMS_Brand.png")" />
            </div>
            <div id="columnLeft">
                <div id="accordian">
                    <ul>
                        <li>
                            @{
if(Model.MainMenuModel==null){
                                  <span>no items found</span>
                                }
                                else {

                                foreach (var MenuItem in Model.MainMenuModel)
                                {
                                    var SubMenuItem = Model.SubMenuModel.Where(m => m.MainMenuID == MenuItem.ID);
                                    <h3><a href="@MenuItem.MainMenuURL"> @MenuItem.MainMenuItem </a></h3>
                                    if (SubMenuItem.Count() > 0)
                                    {
                                        <ul>
                                            @foreach (var SubItem in SubMenuItem)
                                            {
                                                <li><a href='@SubItem.SubMenuURL'>@SubItem.SubMenuItem</a></li>
                                            }
                                        </ul>
                                        }
                                    }
                                }
                            }
                    </ul>
                </div>
                <br />
            </div>
            <div id="content"> @RenderBody()</div>
            <div id="menuBottom" aling="center">
                © Copyright @DateTime.Now.Year Ron Technologies Ltd
            </div>
        </div>
    }
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
</body>
</html>


Мой взгляд работодателем
@model Ron_Financial_Management_System.Employer
@*@model Ron_Financial_Management_System.Models.MenuModel*@
@{
    Layout = "~/Views/Shared/_Layout.cshtml";

    }
<h4>Employer</h4>


Что я уже пробовал:

Can someone kindly guide me on what could be the problem?

когда я нажимаю в выпадающем меню examle ссылку работодателя, я получаю вышеуказанную ошибку, я перепробовал все средства без успеха любезно помогите
Примечание: Я получаю эту строку в своем виде макета (
foreach (var MenuItem in Model.MainMenuModel)
)

F-ES Sitecore

Вы отправляете форму в частичное представление, которое не будет работать, которое направляет сайт непосредственно на эту страницу, но это не действительная страница, она должна существовать внутри чего-то другого. Вместо этого вам нужно отправить beginform в действие Index или что-то еще подходящее.

0 Ответов