我正在构建一个基本的闪卡应用程序 - 一个包含卡片和其他集合。当导航到Set1>之类的东西时Set2> Set3,我希望每个父“Set”链接到各自的详细信息页面。我正在向Details viewModel传递一个名为“breadcrumbs”的字符串,其中包含以下内容:
var stringBuilder = "";
var parent = model.ParentSet;
while (parent != null)
{
stringBuilder += "<li><a href=\"@Url.Action('Detail', 'Set', new {SetId = \" + parentSetId + \"}, null)'>" + parent.Name + "</a> <span class='divider'>/</span></li>";
parent = parent.ParentSet;
}
model.Breadcrumbs =
"<li><a href=\"@Url.Action('Index', 'Home')\">Home</a> <span class='divider'>/</span></li>" +
stringBuilder + "<li class='active'>New Set</li>";
model.Name = "New Set";
生成的URL虽然是文字的 - 包含“@ Url.Action”。
有谁知道如何让这个工作,或者有更好的方法吗?
答案 0 :(得分:1)
评估它:
"<li><a href='" + Url.Action('Index', 'Home') + "'>..."
答案 1 :(得分:0)
我认为这里的一个重要问题是,“您的观点是什么样的?”
如果您的视图正在使用该模型.Breadcrumbs字段如下:
...
<div id="breadcrumbs">
@model.Breadcrumbs
</div>
...
您构建的字符串中的@ Url.Action调用永远不会被执行。 Razor引擎对它在视图文件中找到的代码进行操作,而不是对模型中的字段进行操作。
您需要做以下两件事之一:
而是将“@ Url.Action(...)”放入您正在构建的字符串中,使用类似Url.Link()的内容找出Url在服务器端的内容并直接插入。
(这是更好的)将这些父项作为视图模型的一部分传递给视图,并在视图中循环它们,随时构建标记。通常,您不希望将html放入模型中。该模型用于保存数据,而非呈现代码。