在不同(部分)视图中使用相同的代码

时间:2010-06-01 05:59:43

标签: c# asp.net asp.net-mvc-2

也许这个问题很简单,因为我是MVC2的新手。我有一个简单的演示MVC项目。

(1)弱类型视图:Index.aspx

<% Html.RenderPartial("ArticalList", ViewData["AllArticals"] as List<Artical>); %>

(2)强类型局部视图:ArticalList.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<Artical>>" %>
<% foreach (Artical a in Model)  { %>
           <%= Html.ActionLink(a.Title, "About", new { id = a.ID })%><br />
<%} %>

(3)这是HomeController.cs

   public ActionResult Index()
    {
        ViewData["AllArticals"] = Artical.GetArticals();
        return View();
    }

public ActionResult ArticalList()
{
    return PartialView(Artical.GetArticals());
}

抱歉,我正在使用Web表单“角度”,因为如果我使用Web表单,当我访问Index.aspx时,呈现ArticalList.ascx将调用公共ActionResult ArticalList()。但在这里,我需要在两个动作中两次写出Artical.GetArticals()。我怎么把它们放在一起?

1 个答案:

答案 0 :(得分:1)

据我所知,作为MVC最近的新手,部分视图不使用控制器中的动作方法。 "ArticalList"仅是对部分视图文件的引用,不会再生成操作方法的请求。部分视图从调用它的视图中获取所有数据。

Html.RenderAction可能是你感到困惑的行为。