基本上,我开始研究这个应用程序,对Web开发一无所知,这严重阻碍了我的搜索功能。可能应该读一本书,但这不太可能。使用ASP.NET MVC3 RC2,我正在尝试创建一个强类型的局部视图,它可以导航到相关项目,以及维护面包屑路径(我认为它是ViewBag中的List?)。一个很好的比喻是带有同义词子视图的字典页面。
class Entry
{
string Name;
string Definition;
IEnumerable<Entry> Synonyms;
}
主要是页面显示单词及其定义等。但是有一个带有同义词的div,您可以单击以查看所选单词的同义词,替换为w / ajax。
我最初认为我需要做一个html帮助器,但后来我看到了从我的控制器返回PartialView的东西,看起来好多了。
我无法拼凑拼图的所有部分。样本或大纲会很棒。
谢谢!
答案 0 :(得分:1)
伙计,我知道在问之前我应该再花一点时间了。
所以,这是食谱:
Synonym(id) { return PartialView(GetEntry(id)); }
<div id="Synonyms">@{Html.RenderAction("Synonym", @Model.Id);}</div>
对于Synonym.cshtml中的ajax导航链接,请使用类似
的内容@foreach(Entry syn in @Model.Synonyms)
@Ajax.ActionLink((string)@syn.Name, "Synonym",
new { id = @syn.Id }, new AjaxOptions { UpdateTargetId = "Synonyms" })
有一件事让我失望的是new { id = @syn.Id }
,因为我的控制器中的参数名实际上是数字,我必须使用new { number = ... }
哦,我问起导航问题。我认为浏览器的后退按钮足以满足大多数导航,但仍需要“返回当前字”链接。为此,我做了以下事情:
int orig
并设置ViewBag.OrigId = orig;
。new { id = @syn.Id, orig = @ViewBag.OrigId }
@Ajax.ActionLink("Back To Current Word", "Synonym", new { id = @ViewBag.OrigId, orig = @ViewBag.OrigId }, new AjaxOptions { UpdateTargetId = "Synonyms" })
@Html.RenderAction
的调用,以传递ActionLinks new { id = @Model.Id, orig = @Model.Id }
如果其他人提出了一个更好的答案,让我想重写我的东西,我会接受他们的。而且我喜欢关于我是否遗漏任何内容的反馈,比如我如何避免Controller.Synonym的第二个参数或其他简化或改进。