C# MVC 3中从一个控制器到布局的模型传递
我用ASP.NETMVC3创建博客。我在单击博客导航链接时创建了列出博客文章的视图。我还尝试在布局中列出博客类别,以便在每个链接中显示博客类别列表。问题是,当我单击博客类别列表链接时,它会显示运行时错误,如“对象引用未设置为对象的实例”。在此代码的_布局页面中C# MVC 3中从一个控制器到布局的模型传递,c#,.net,asp.net-mvc-3,razor,C#,.net,Asp.net Mvc 3,Razor,我用ASP.NETMVC3创建博客。我在单击博客导航链接时创建了列出博客文章的视图。我还尝试在布局中列出博客类别,以便在每个链接中显示博客类别列表。问题是,当我单击博客类别列表链接时,它会显示运行时错误,如“对象引用未设置为对象的实例”。在此代码的_布局页面中 @foreach (Tag tag in (IEnumerable<Tag>)ViewBag.tag) { <a href="@Href("~/Posts/Tags/" + tag.Nam
@foreach (Tag tag in (IEnumerable<Tag>)ViewBag.tag)
{
<a href="@Href("~/Posts/Tags/" + tag.Name)"> @tag.Name </a>
}
@foreach(在(IEnumerable)ViewBag.Tag中标记Tag)
{
}
在博客控制器中,我通过ViewBag传递了数据
IEnumerable<Tag> tags = from tag in model.Tags select tag;
ViewBag.tag = tags;
IEnumerable tags=来自模型中的标记。标记选择标记;
ViewBag.tag=标签;
在这里,我还将此代码复制到导航链接控制器的每个控制器,以便将数据传递到布局,以便博客类别列表可以出现在所有链接页面中。因为这是针对“干燥”的。
请您帮助我,使每个博客类别链接都能到达相应的类别博客。我在博客上实现的标记类别略有不同 我在项目中创建了一个名为
HtmlHelpers
的文件夹。在这个类中,我有一个名为DisplayHelpers.cs
的类,它包含这样的代码
namespace ProjectName.HtmlHelpers
{
public static class DisplayHelpers
{
public static MvcHtmlString GetTags()
{
var tags = from tag in model.Tags select tag;
StringBuilder sb = new StringBuilder();
foreach (Tag tag in tags)
{
sb.AppendFormat("<a href="{0}"> {1} </a>",
// link,
tag.Name);
}
return new MvcHtmlString(sb.ToString());
}
}
}
现在你的标签应该出现在你调用这个函数的任何地方
顺便说一句,我能说服你将锚定标签嵌入无序列表中吗?由于它充当标记链接的“集合”,将它们放在列表中有助于将它们组织成单个“实体”。我在我的博客上实现的标记类别略有不同 我在项目中创建了一个名为
HtmlHelpers
的文件夹。在这个类中,我有一个名为DisplayHelpers.cs
的类,它包含这样的代码
namespace ProjectName.HtmlHelpers
{
public static class DisplayHelpers
{
public static MvcHtmlString GetTags()
{
var tags = from tag in model.Tags select tag;
StringBuilder sb = new StringBuilder();
foreach (Tag tag in tags)
{
sb.AppendFormat("<a href="{0}"> {1} </a>",
// link,
tag.Name);
}
return new MvcHtmlString(sb.ToString());
}
}
}
现在你的标签应该出现在你调用这个函数的任何地方
顺便说一句,我能说服你将锚定标签嵌入无序列表中吗?由于它充当标记链接的“集合”,因此将它们放在列表中有助于将它们组织为单个“实体”。在传递到ViewBag之前是否设置了标记变量?如果要在“ViewBag.tag=tags;”行中断是否确实使用model.Tags中的值进行了设置?是的,ViewBag.tag值是使用model.Tags的值进行设置的。Tags变量在传递到ViewBag之前是否已设置?如果要在“ViewBag.tag=tags;”行中断它确实是用model.Tags的值设置的吗?是的,ViewBag.tag的值是用model.Tags的值设置的。非常感谢JesseB。这对解决我的问题很有帮助。正如你们所说,我已经使用了无序列表。而且,使用sb.AppendFormat存在问题。当我第一次单击博客类别链接时,它会工作,但第二次单击链接时,锚href路径会附加到以前的锚href路径。是否有其他功能可避免此问题。再次感谢你的想法,非常感谢JesseB。这对解决我的问题很有帮助。正如你们所说,我已经使用了无序列表。而且,使用sb.AppendFormat存在问题。当我第一次单击博客类别链接时,它会工作,但第二次单击链接时,锚href路径会附加到以前的锚href路径。是否有其他功能可避免此问题。再次感谢你的想法。