繁体   English   中英

助手不起作用(ASP.NET MVC)

[英]Helper does not work (ASP.NET MVC )

我尝试在我的项目中创建一个助手。 这是我的代码:

@using VrBlog.Models;
@helper Render(Post post, System.Web.Mvc.HtmlHelper html, bool isAdmin, bool showComments)
{
    <div class="postTitle"><a href="@Href("~/Views/Posts/Details/" + post.Id)">@post.Title</a></div>
    <div class="postContainer">
        <div class="postTabs">
            <div class="dateTab">
                <div class="month">@post.DateTime.Value.ToString("MMM").ToUpper()</div>
                <div class="day">@post.DateTime.Value.ToString("dd")</div>
            </div>
            <div class="commentsTab">
                <a href="@Href("~/Views/Posts/Details/"+post.Id + "#comments")">@post.Comments.Count</a>
            </div>
        </div>
        <div class="postContent">
            <div class ="postBody">@html.Raw(post.Body)</div>
            <div class="tagList">
                @foreach (Tag tag in post.Tags)
                {
                    <span class="tag"><a href="@Href("~/Views/Posts/Tags" + tag.Name)">@tag.Name</a></span>
                }
            </div>
            <div class="linkList">
                @{ string url = "http://www.mattblagden.com/posts/details/" + post.Id;}
            </div>
        </div>
    </div>

    if (showComments)
    {
        <div id="commentsContainer">
            <a id ="comments"></a>
            @foreach (Comment comment in post.Comments.OrderBy(x => x.DateTime))
            {
                <div class="comment">
                    <div class="commentName">
                        @if (!string.IsNullOrWhiteSpace(comment.Email))
                        {
                            <a href="mailto:@comment.Email">@comment.Name</a>
                        }
                        else
                        {
                            @comment.Name;
                        }
                    </div>
                    said:
                    <div class="commentBody">@html.Raw(html.Encode(comment.Body).Replace("\n", "<br/>"))</div>
                    <div class="commentTime">at @comment.DateTime.Value.ToString("HH:mm") on @comment.DateTime.Value.ToString("yyyy/MM/dd")</div>
                </div>
            }
            <div id="commentEditor">
                <div id="commentPromt">Leave a comment!</div>
                <form action="@Href("~/Views/Posts/Comment/" + post.Id)" method="post">
                    <input type="text" id="commentNamePromt" name="name"/>Name (required)<br/>
                    <input type="text" id="commentEmailPromt" name="email" />Email (optional)<br/>
                    <textarea id="commentBodyInput" name="body" rows="10" cols="60"></textarea><br/>
                    <input type="submit" id="commentSubmitInput" name="submit" value="Submit!"/>
                </form>
            </div>
        </div>
    }
}

然后,我尝试从视图中调用它。 我的助手位于项目内的AppCode文件夹中。

我尝试这样称呼它

@foreach (Post post in Model)
{
    @PostHelper.Render(post,Html,isAdmin, false)
}

但是我收到以下错误:

错误CS0103当前上下文中不存在名称'PostHelper'

我该如何解决这个问题,为什么它不可见?

改变这个

@foreach (Post post in Model)
{
    @PostHelper.Render(post,Html,isAdmin, false)
}

@foreach (Post post in Model)
{
    @Render(post,Html,isAdmin, false)
}

如果您在同一页面上调用帮助程序,请尝试以下操作:

@foreach (Post post in Model)
{
    @Render(post, Html, isAdmin, false)
}

重命名App_Code中的文件夹

“我们可以在视图模板之外定义@helper方法,并使其能够在我们项目中的所有视图模板中重复使用。

我们可以通过将@helper方法保存在您在项目根目录下创建的\\ App_Code目录中的.cshtml / .vbhtml文件中来完成此任务。”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM