4

很抱歉问了这么简单的问题,但我花了很长时间试图解决这个问题。最后,我决定问你。

让我们从代码库开始:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Navigation.Helpers
{
    public static class NavigationBarSE
    {
        public static MvcHtmlString RenderNavigationBarSE(this HtmlHelper helper, String[] includes)
        {
            return new MvcHtmlString("Y U no Work??");
            //NavTypeSE res = new NavTypeSE(includes);
            //String ress = res.toString();
            //return new MvcHtmlString(ress);

        }    
    }
}

在原始形式中,这个助手需要返回一个由 NavTypeSE 类生成的字符串。但最后,为了得到一个结果,我只希望它为我返回一个字符串......但它没有这样做......

在你问之前,我可以说,

<add namespace="Navigation.Helpers"/>

存在于 Views 文件夹中的我的 Web.config 文件中。

有关详细信息,我的 NavTypeSE 类如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Navigation.Helpers
{
    //Creates a Navigation Menu Type which includes Previous, Next and Validate Buttons
        public class NavTypeSE
        {
        Boolean pr, nt, vld;
        Boolean Previous { get; set; }
        Boolean Next { get; set; }
        Boolean Validate { get; set; }
        public NavTypeSE(Boolean Previous, Boolean Next, Boolean Validate)
        {
            this.pr = Previous;
            this.nt = Next;
            this.vld = Validate;
        }
        public NavTypeSE() { }

        public NavTypeSE(String[] inc)
        {
            for(int i=0; i<inc.Length; i++)//foreach (String s in inc)
            {
                String s = inc[i]; // Don't need for foreach method.
                if (s.Equals("previous")||s.Equals("Previous"))
                {
                    this.pr = true;
                }
                else if (s.Equals("next") || s.Equals("Next"))
                {
                    this.nt = true;
                }
                else if (s.Equals("validate") || s.Equals("Validate"))
                {
                    this.vld = true;
                }
                else
                {
                    this.pr = false; this.nt = false; this.vld = false;
                }
            }

        public String toString()
        {
            return "Previous: " + this.pr + ", Next: " + this.nt + ", Validate: " + this.vld;
        }
    }
}

另外,在我看来,我称这个助手如下:

@{
    String[] str = new String[] { "Previous", "next", "Validate" };
    Html.RenderNavigationBarSE(str);
}

这只是一个项目的基础。而且我是 C# 和 ASP.NET MVC 平台的初学者。很抱歉浪费了您的时间。

4

1 回答 1

2

RenderNavigationBarSE在 Response 中没有写入任何内容,只是返回一个MvcHtmlString.

因此,您需要@在方法调用之前放置一个告诉 Razor 引擎您要将返回MvcHtmlString的内容写入响应中(否则在代码块中它只是执行您的方法并丢弃返回的值)

@{
    String[] str = new String[] { "Previous", "next", "Validate" };
}

@Html.RenderNavigationBarSE(str);

您可以阅读有关 Razor 语法的更多信息:

于 2012-11-16T14:03:04.010 回答