mvc + jqm actionlink html文本问题

时间:2012-04-27 20:26:21

标签: asp.net-mvc jquery-mobile razor asp.net-mvc-4

我刚开始使用MVC,我正在尝试为jvc-mobile与mvc交互构建一个示例,概念证明页面。我已经在这方面找到了答案,但我认为我还没有足够的知识来制定正确的查询。

在我看来,我正在尝试生成这样的函数输出(从jqm演示站点中采样):

        <ul data-role="listview" data-inset="true">
        <li><a href="index.html">
            <h3>Stephen Weber</h3>
            <p><strong>You've been invited to a meeting at Filament Group in Boston, MA</strong></p>
            <p>Hey Stephen, if you're available at 10am tomorrow, we've got a meeting with the jQuery team.</p>
            <p class="ui-li-aside"><strong>6:24</strong>PM</p>
        </a></li>
        <li><a href="index.html">
            <h3>jQuery Team</h3>
            <p><strong>Boston Conference Planning</strong></p>
            <p>In preparation for the upcoming conference in Boston, we need to start gathering a list of sponsors and speakers.</p>
            <p class="ui-li-aside"><strong>9:18</strong>AM</p>
        </a></li>
    </ul>

所以,我的工作方式如下:

@foreach (var item in Model) {
    <li>
          @Html.ActionLink( LargeExpandedMultiContentText, "Edit", new { id = item.SysID })
        </li>
}

我的问题,我不知道一个简单的问题,是,在MVC术语中,我如何填充变量,以便ActionLink()生成的href与我从中采样的样式匹配jqm网站?

我已经尝试了这一点,虽然它几乎可以工作,但我确信它不是'正确'的方式,特别是当我到达拉出“Steven Weber”和其他字符串的项目/模型时。 ..plus它编码文本,但我确信有一种方法可以轻松处理。

@foreach (var item in Model) {
    <li>
        @{ String txt =  "<h3>Stephen Weber</h3><p><strong>You've been invited to a meeting at Filament Group in Boston, MA</strong></p><p>Hey Stephen, if you're available at 10am tomorrow, we've got a meeting with the jQuery team.</p>         <p class=\"ui-li-aside\"><strong>6:24</strong>PM</p>";
        }
        @Html.ActionLink( txt, "Edit", new { id = item.SysID })
    </li>
}

谢谢,感谢您的帮助

布赖恩

2 个答案:

答案 0 :(得分:1)

我不确定是否可以使用Html.ActionLink来构建这样一个复杂的动作链接。也就是说,Html Helpers应该是辅助函数,通过为您提供以常用方式呈现HTML的快捷方式,使您的生活更轻松。你不需要来使用它们。在这种情况下,我认为您应该使用普通的html标记,并使用Url.Action来创建正确的网址。

如果您想在可枚举模型中包含此信息,我可能会执行以下操作:

@foreach (var item in Model) {
    <li><a href="@Url.Action(item.Action)">
        <h3>@item.Name</h3>
        <p><strong>@item.Title</strong></p>
        <p>@item.Message</p>
        <p class="ui-li-aside"><strong>@item.Time</strong>@item.TimePeriod</p>
    </a></li>
}

注意:您正在寻找的用于显示内容而不对其进行编码的功能是@Html.Raw

答案 1 :(得分:0)

在回答我的另一个“半问题”时,我找到了这个资源......

http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx

我相信底部的“剃刀代表”项目符合我的需要。

@{
  Func<dynamic, object> b = 
   @<strong>@item</strong>;
}

@b("Bold this")