![](/img/trans.png)
[英]How to dynamically create several ActionLinks from the Controller in MVC?
[英]Building a URL with ActionLinks from within a Controller in MVC
我正在構建一個基本的抽認卡應用程序-一套包含卡片和其他套。 導航到Set1> Set2> Set3之類的內容時,我希望每個父級“集合”都鏈接到其各自的詳細信息頁面。 我正在向Details視圖模型傳遞一個名為“ 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”。
有誰知道我如何使它工作,或者是否有更好的方法來做到這一點?
只需評估一下:
"<li><a href='" + Url.Action('Index', 'Home') + "'>..."
我認為這里的一個重要問題是:“您的視圖長什么樣?”
如果您的視圖正在使用該model.Breadcrumbs字段,如下所示:
...
<div id="breadcrumbs">
@model.Breadcrumbs
</div>
...
您構建的字符串中的@ Url.Action調用將永遠不會執行。 Razor引擎對在視圖文件中找到的代碼進行操作,而不對模型中的字段進行操作。
您需要執行以下兩項操作之一:
而是將“ @ Url.Action(...)”放入正在構造的字符串中,使用諸如Url.Link()之類的代碼弄清服務器端的Url,然后直接將其插入。
(這更好),將那些父級作為視圖模型的一部分傳遞給視圖,並在視圖中循環遍歷它們,並隨便構造標簽。 通常,您不想將html放入模型中。 模型在那里保存數據 ,而不是表示代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.