Вызов класса контроллера и передаваемое значение - PullRequest
0 голосов
/ 15 марта 2012

Я пытаюсь создать меню, используя теги <ui><li></li></ui>.Я читаю из файла XML и сохраняю его в объекте списка (меню).

Объект меню:

Public Class MenuVM

#Region "Properties"
    Public Property ID As Integer
    Public Property Description As String
    Public Property Comments As String
    Public Property UserControlName As String
    Public Property AssemblyName As String
    Public Property ModelName As String
    Public Property SortOrder As Integer
    Public Property IsSelected As Boolean
#End Region

End Class

Класс HomeController:

    Public Class HomeController
    Inherits System.Web.Mvc.Controller


    Function Index() As ActionResult
        Dim oMenuHelper As New MenuHelper
        Return View("index", oMenuHelper.BuildMenu())
    End Function

    <HttpPost()> _
    Function Index(ByVal iSelect As Integer) As ActionResult
        Dim oMenuHelper As New MenuHelper
        Return View("index", oMenuHelper.BuildMenu())
    End Function

    Function About() As ActionResult
        Return View()
    End Function
End Class

ASPX СТРАНИЦА:

<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of List(OF MVCApp.MenuVM))" %>
<%@ Import Namespace ="MVCApp" %>
<asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">
    Home Page
</asp:Content>

<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">

    <div id="menu" class="block"> 
    <% Using Html.BeginForm("Index", "Home")%>  
      <ul id="menuItems"> 

        <% For Each item As MVCApp.MenuVM In Model%>
         <li><%: Html.ActionLink(item.Description, "Index", "Home", New With {item.ID}, Nothing)%></li>               
        <%Next%>
       </ul> 
        <% End Using %>              

</div> 
</asp:Content>

Выход:

enter image description here

Когда вы нажимаете на источник просмотра, вывод выглядит следующим образом:

<!DOCTYPE html>
<html>
<head><title>

    Home Page

</title><link href="Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
</head>
<body>
    <div class="page">
        <div id="header">
            <div id="title">
                <h1>My MVC Application</h1>
            </div>
            <div id="logindisplay">


        [ <a href="/Account/LogOn">Log On</a> ]

            </div> 
            <div id="menucontainer">
                <ul id="menu">
                    <li><a href="/">Home</a></li>
                    <li><a href="/Home/About">About</a></li>
                </ul>
            </div>
        </div>
        <div id="main">


    <div id="menu" class="block"> 
    <form action="/" method="post">  
      <ul id="menuItems"> 


         <li><a href="/Home/Index/1">Ballot Language</a></li>               

         <li><a href="/Home/Index/2">Assisting Absentee Voter</a></li>               

         <li><a href="/Home/Index/3">Instructions</a></li>               

         <li><a href="/Home/Index/4">Ballot Questions</a></li>               

       </ul> 
        </form>              

</div> 

            <div id="footer">
            </div>
        </div>
    </div>
</body>
</html>

ОШИБКА: Когда я нажимаю на ссылку, я получаю следующую ошибку:

enter image description here

Может ли кто-нибудь помочь с этим.Я хочу передать идентификатор меню контроллеру и загрузить соответствующий пользовательский контроль.Я не могу использовать Javascript или jquery в этом проекте, поскольку у пользователя может быть отключен JavaScript на компьютере.

Ответы [ 2 ]

1 голос
/ 15 марта 2012

Вы должны удалить слово "контроллер" из ссылок.URL должен быть: "/ Home / Index / 1".Для этого измените код ActionLink:

Html.ActionLink(item.Description, "Index", "Home", New With {item.ID}, Nothing)%>
1 голос
/ 15 марта 2012

Попробуйте ссылку как / Home / Index / 1 not / HomeController / Index / 1

...