相关疑难解决方法(0)

剃刀:声明性HTML助手

我正在尝试编写一个简单的声明性html帮助器:

@helper Echo(string input) {
    @input
}
Run Code Online (Sandbox Code Playgroud)

如果我将它嵌入我想要使用它的页面,帮助程序工作正常.但是如果我将它移动到一个单独的.cshtml文件并将该文件放在~/Views/Helpers目录中,我的视图就不能再编译了,因为找不到帮助器.根据Scott Gu 关于Razor博客文章,它应该有效.

我究竟做错了什么?

c# asp.net-mvc html-helper razor asp.net-mvc-3

48
推荐指数
5
解决办法
4万
查看次数

部分视图中不提供HTML帮助程序

我创建了一个局部视图,无法访问HTML Helpers的Html命名空间.它在主视图中可用.我错过了什么吗?

在此输入图像描述

编辑:我应该提到我正在使用ASP.NET MVC 5.

asp.net-mvc razor asp.net-mvc-5

8
推荐指数
1
解决办法
2303
查看次数

在ASP NET MVC 3和Razor中创建自定义助手

我正在用ASP NET MVC 3和Razor创建一个帮助器来显示我的网格

@helper ListaPessoa(IEnumerable<TesteHelpersMV3.Models.PessoaModel> listaPessoa) 
{    
    <table>
    <tr>
        <th></th>
        <th>Nome</th>
        <th>Endereco</th>
        <th>DataNascimento</th>
    </tr>

    @foreach (var item in listaPessoa)
    {
        <tr>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id = item.Nome }) |
                @Html.ActionLink("Details", "Details", new { id = item.Nome }) |
                @Html.ActionLink("Delete", "Delete", new { id = item.Nome })
            </td>
            <td>@item.Nome</td>
            <td>@item.Endereco</td>
            <td>@item.Cidade</td>
        </tr>
    }

    </table>
}
Run Code Online (Sandbox Code Playgroud)

但是Razor无法找到@ Html.ActionLink并发生以下错误

编译器错误消息:CS1061:'System.Web.WebPages.Html.HtmlHelper'不包含'ActionLink'的定义,也没有扩展方法'ActionLink'接受类型'System.Web.WebPages.Html.HtmlHelper'的第一个参数可以找到(你错过了使用指令或程序集引用吗?)

怎么了??? 如何解决这个问题呢??

谢谢

莱安德罗普拉多

asp.net-mvc razor

7
推荐指数
1
解决办法
5750
查看次数

Html.ActionLink不能在全局Razor助手中使用

我在我的MVC项目的App_Code文件夹中创建了一个全局.cshtml Razor文件来声明@helper函数.问题是我无法在辅助函数中使用Html.ActionLink(或其他扩展).我试图通过@using导入类,但是没有用.有任何想法吗?

c# razor asp.net-mvc-3

6
推荐指数
1
解决办法
1850
查看次数

当前上下文错误中不存在名称"Url"

我有一个MVC4项目,我正在尝试创建一个帮助器.我添加了一个名为"App_Code"的文件夹,在该文件夹中我添加了一个名为MyHelpers.cshtml的文件.以下是该文件的全部内容:

@helper MakeButton(string linkText, string actionName, string controllerName, string iconName, string classes) {
    <a href='@Url.Action(linkText,actionName,controllerName)' class="btn @classes">Primary link</a>
}
Run Code Online (Sandbox Code Playgroud)

(我知道有一些未使用的参数,我会在我修复之后再找到它们)

我"清理"并构建解决方案,没有错误.

在使用帮助程序的页面中,我添加了此代码.

@MyHelpers.MakeButton("Back","CreateOffer","Merchant","","btn-primary")
Run Code Online (Sandbox Code Playgroud)

当我尝试运行该项目时,我收到以下错误:

编译器错误消息:CS0103:当前上下文中不存在名称"Url"

我似乎找不到写这个的正确方法 - 我做错了什么?与我在网上看到的例子相比,它似乎是正确的吗?

asp.net-mvc view-helpers asp.net-mvc-4

5
推荐指数
1
解决办法
6755
查看次数

MVC @helper HTML.Raw错误

我在Razor Helper文件中有以下代码

@helper MakeNoteBlank(string content)
{
    string msg = "";

    if(content == null)
    {
        msg = "&nbsp;";
    }
    else
    {
        msg = content;
    }

    <div class="note">
        <p>
             @Html.Raw(msg)
        </p>
    </div>
}
Run Code Online (Sandbox Code Playgroud)

该代码在使用@ Html.Raw(..)语句执行时失败,指出“对象引用未设置为对象的实例”。

如果我删除@ Html.Raw(..)并直接输出“ msg”,则没有问题。

我究竟做错了什么?

asp.net-mvc razor

5
推荐指数
1
解决办法
1809
查看次数

.net mvc仅在具有值的情况下在视图中显示字段

我有一些“客户详细信息”,我只想显示具有值的字段。

例如,如果Telephone为null,则不显示它。

我目前在模型中

    public string FormattedTelephone
    {
        get { return string.IsNullOrEmpty(this.Telephone) ? " " : this.Telephone; }
    }
Run Code Online (Sandbox Code Playgroud)

在我看来

@Html.DisplayFor(model => model.FormattedTelephone)
Run Code Online (Sandbox Code Playgroud)

这工作正常,但是,如果字段具有值,例如,我想显示字段名称

电话: 02890777654

如果我@Html.DisplayNameFor在视图中使用,即使该字段为null,它也会显示该字段名称。

我还想用粗体设置字段名称的样式,不确定在哪里设置样式(视图或视图模型)。

asp.net-mvc

4
推荐指数
1
解决办法
2万
查看次数