从action方法返回的数据的样式问题

时间:2010-07-30 13:47:48

标签: css asp.net-mvc

控制器操作:

public string Index(){
var tmp = (from i in Message.message
                  where i.To == "bognjen" && i.Read == false
                  select i.Read).Count().ToString();
        return tmp;
}

观点的一部分:

<li><a>Inbox <%=Html.Action("Index","MyController")%></a></li>

当动作Index返回字符串时,它不会使用<li>的应用样式进行格式化。如何格式化这个字符串?

例如:  动作索引返回编号4,然后查看页面显示:收件箱4.问题:收件箱有一种样式(字体和大小),4有其他样式(与其他字体和大小)

<li>的样式是:

li {
   list-style:none;
   background:url(images/bullet.png) no-repeat 0 5px;
   padding:3px 0 3px 17px;
}

此样式应该适用于Index操作的返回数据(在我的示例中为4)

2 个答案:

答案 0 :(得分:1)

有更好的方法可以做到这一点。例如:

在某个控制器上创建此操作方法(让我们称之为MasterController):

[ChildActionOnly]
public ActionResult InboxStatus()
{
    var model = new InboxStatusViewModel();
    model.UnreadMessageCount = from i in Message.message
                   where i.To == "bognjen" && i.Read == false
                   select i.Read).Count();

    return PartialView(model);
}

InboxStatusViewModel只是一个POCO。

然后创建部分视图InboxStatus.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<InboxStatusViewModel>" %>

<li><a>Inbox (<%:Model.UnreadMessageCount %>)</a></li>

然后只需在视图中调用Html.RenderAction(),并指定您希望来自InboxStatus的{​​{1}}操作。这将呈现链接,它将被设置样式和所有内容。

答案 1 :(得分:0)

var tmp = (from i in Message.message 
                  where i.To == "bognjen" && i.Read == false 
                  select i.Read).Count().ToString();

那应该返回一个数字。要格式化,请将格式字符串添加到ToString()

Standard Numeric Format Strings