Ajax 强类型部分视图导航

Ajax 强类型部分视图导航,ajax,asp.net-mvc-3,partial-views,Ajax,Asp.net Mvc 3,Partial Views,基本上,我开始开发这个应用程序时对网络开发一无所知,这严重抑制了我的搜索能力。也许你应该读一本书,但不太可能。使用ASP.NET MVC3 RC2,我试图创建一个强类型的局部视图,该视图可以导航到相关的项目,并维护一个面包屑轨迹(我认为它应该是ViewBag中的列表?)。一个很好的类比是一个带有同义词库子视图的词典页面 class Entry { string Name; string Definition; IEnumerable<Entry> Synonyms;

基本上,我开始开发这个应用程序时对网络开发一无所知,这严重抑制了我的搜索能力。也许你应该读一本书,但不太可能。使用ASP.NET MVC3 RC2,我试图创建一个强类型的局部视图,该视图可以导航到相关的项目,并维护一个面包屑轨迹(我认为它应该是ViewBag中的列表?)。一个很好的类比是一个带有同义词库子视图的词典页面

class Entry
{
   string Name;
   string Definition;
   IEnumerable<Entry> Synonyms;
}
类条目
{
字符串名;
字符串定义;
可数同义词;
}
页面主要显示单词及其定义等。但是有一个同义词的div,您可以单击它查看所选单词的同义词,替换为w/ajax

我最初认为我需要做一个html助手,但后来我看到了一些关于从控制器返回PartialView的东西,这似乎好多了

我拼凑拼图的所有部分都有困难。一份样品或大纲就好了


谢谢

伙计,我知道我应该在问之前多做一会儿

因此,以下是配方:

  • 在控制器中生成函数,
    Synonym(id){return PartialView(GetEntry(id));}
  • 创建一个部分视图,Synonym.cshtml,强类型到条目
  • 使用
    @{Html.RenderAction(“同义词”、@Model.Id);}在主显示器中显示局部视图
  • 对于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}
    ,因为控制器中的参数名实际上是number,所以我不得不使用
    new{number=…}

    哦,我还问了导航的问题。我认为浏览器的后退按钮对于大多数导航来说已经足够了,但仍然需要一个“返回当前单词”链接。为此,我做了以下工作:

  • 修改了Controller.Synonym以获取另一个参数,
    int orig
    ,并设置
    ViewBag.OrigId=orig返回之前
  • 修改了ActionLinks,使其显示为
    new{id=@syn.id,orig=@ViewBag.OrigId}
  • 在Synonym.cshtml-
    @Ajax.ActionLink(“返回到当前单词”,“同义词”,新的{id=@ViewBag.OrigId,orig=@ViewBag.OrigId},新的AjaxOptions{UpdateTargetId=“Synonyms”})中创建了反向链接。
  • 修改了对
    @Html.RenderAction
    的调用,以传递类似ActionLinks
    new{id=@Model.id,orig=@Model.id}中的对象
  • 如果有人提出更好的答案,让我想重写我的东西,我会接受他们的答案。我希望得到关于我是否遗漏了任何东西的反馈,比如如何避免控制器的第二个参数。同义词或其他简化或改进