0

ニュースのホームページにループ文があります..

私はこれらのコードを持っています..

モデル :

Imports Microsoft.VisualBasic
Imports System.Data

Public Class ClassNewsConnection

    Inherits ClassConnection

    'Featured News for Home Page

    Public Function NewsFeatureHome() As DataTable
        Return ReadData("SELECT * FROM news WHERE newsFeature = '" & 1 & "' ORDER BY newsID DESC LIMIT 3  ")
    End Function


End Class

コントローラー:

Public Class HomeController
    Inherits Global.System.Web.Mvc.Controller
    Private News As New ClassNewsConnection
    Private Announcement As New ClassAnnouncementConnection
    Private Process As New ClassHTML

Function Index() As ActionResult
        Dim dNews As DataTable = News.NewsFeatureHome()

        For dCount As Integer = 0 To dNews.Rows.Count - 1
            dNews.Rows(dCount).Item("newsTitle") = Process.ToHTML(dNews.Rows(dCount).Item("newsTitle"))
            dNews.Rows(dCount).Item("newsContent") = Process.ToHTML(dNews.Rows(dCount).Item("newsContent"))
        Next
        Return View(dData)
    End Function

End Class

意見 :

<%@ Page Title="" Language="VB" MasterPageFile="~/Views/Shared/SiteMasterPage.Master" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="System.Data" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Home
</asp:Content>

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

    <h2>Index</h2>

    <div>

        <label for="News">News</label>
        <%Dim dNews As DataTable = ViewData.Model%>
        <%Dim id As Integer%>
        <%Dim dTitle As String%>

        <%For dCount As Integer = 0 To dNews.Rows.Count - 1%>
        <%Dim dContent As String = dNews.Rows(dCount).Item("newsContent")%>
        <%id = dNews.Rows(dCount).Item("newsID")%>

        <p>
        <%dTitle = dNews.Rows(dCount).Item("newsTitle")%>
        <%=Html.ActionLink(dTitle, "__________", New With {id}, DBNull.Value)%>
        <img src='<%=Url.Content("~/NewsImages/" + dNews.Rows(dCount).Item("newsThumbnail")) %>' alt="" />

        <%If dContent.Length > 100 Then%>
            <%dContent = dContent.Substring(0, dContent.IndexOf("", 300)) & "..."%>
        <%Else%>
            <%dContent = dContent%>
        <%End If%>

        <%=Html.ActionLink("Read More", "__________", New With {id}, DBNull.Value)%>
        </p>

        <%Next%>
    </div>

</asp:Content>

for ループ ステートメントは、さまざまなコントローラーとビューからさまざまなニュースを出力します。たとえば、最初の出力はこのページをレンダリングできます: Community/CommunityNews/7 2 番目の出力はこのページをレンダリングできます: Athletics/AthleticsNews/5 3 番目の出力はこのページをレンダリングできます:プログラム/プログラムニュース/2

それらのページへのリンクのコードを作成するにはどうすればよいですか? javascript を使用しますか?問題は、私は javascript にあまり詳しくないことです :( 助けてください.. ありがとう! ありがとう!

4

2 に答える 2

1

テーブル内のニュースタイプフィールドなどに基づいて、ActionLinkメソッドの2番目の引数を生成できるはずです。例えば

<%
Dim newsType As String = dNews.Rows(dCount).Item("newsType")

Dim controllerName As String
Dim actionName as String

' I'm guessing you have a field similar to this:
If (newsType = "Com. News") then
  controllerName = "Community"
  actionName = "CommunityNews"
End If

If (newsType = "Ath. News") then 
  controllerName = "Athletics"
  actionName = "AthleticsNews"
End If
%>

<%=Html.ActionLink(dTitle, actionName, controllerName, New With {Id = id})%>

これでうまくいくはずですが、ビューにコードが多すぎるのではないかと心配し始めます。DataTablesをモデルとして渡すのは良い考えではないかもしれませんが、現時点でそれを変更するには多くの作業が必要になる可能性があります。

特定のニュースタイプのコントローラーとアクションを返すヘルパーメソッドを作成できます。さらに、ニュースタイプを指定してリンクを生成することもできます。これを行うには、HtmlHelperクラスの拡張メソッドを使用してクラスを作成します。そのメソッドは次のようになります。

<Extension()> _
Public Sub NewsLink(ByVal htmlHelper As HtmlHelper, newsType as string, linkText As String, id As int)

    Dim action As String
    Dim controller As String

    'todo: logic to get action and controller names from news type

    return htmlHelper.ActionLink(linkText, action, controller, New With {Id = id})
End Sub

幸運を。MVCを使用したC#よりもVB.NETを使用している人は少ないと思います。

于 2009-10-23T06:56:26.077 に答える
0

ビューコードのこの部分に問題があると思いますか?

Html.ActionLink(dTitle, "__________", New With {id}, DBNull.Value)

DBNull.Value本当に奇妙に見えます。ということNullですか?

とにかく、次のようなオーバーロードを使用できるはずです。

Html.ActionLink(dTitle, "CommunityNews", "Community", New With {id}, Null)

これには JavaScript を使用しないでください。

于 2009-10-23T06:57:43.983 に答える