根据mvc3 asp.net中的条件确定html标记的内容

时间:2012-06-12 09:08:19

标签: asp.net html asp.net-mvc-3 razor

这听起来很基本但我找不到答案。

我将一个Message结构传递给View,我想显示它。

如果Message.Category字段是“技术”我想显示“技术问题”,否则只是按原样显示它。

如何让视图理解技术问题不是声明,而是我要显示的html文本?

我的代码:

<span class="cright" id="cat">
@{
    if (String.Compare(ViewBag.Message.Category, "Technical") == 0) 
    {
     Technical Problem <----THIS  
    } 
    else @ViewBag.Message.Category
 }
</span>

更多信息: 我正在研究消息传递系统。用户创建消息并在发送消息时可以查看消息。该类别是强制性的(问题,建议或技术问题)并且为了避免数据库中的冗余,我将最后一个选项截断为“技术”,但是当用户查看他们发送的消息时,我希望它完全显示。

谢谢大家;从你到达的所有答案:

<span class="cright" id="cat">

      @if (ViewBag.Message.Category == "Technical ")
         {<text>Technical Problem</text>}
       else
         {<text>@ViewBag.Message.Category</text>}

</span>

正如我想的那样工作。

3 个答案:

答案 0 :(得分:0)

这是你在找什么?

<击>

<击>
@("Technical Problem")

<击>

替代地

<text>Technical Problem</text>

替代地

@:Technical Problem

阅读http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx了解语法..

答案 1 :(得分:0)

您可以使用

<text>Technical Problem</text>

为此。

答案 2 :(得分:0)

原始答案

if(ViewBag.Message.Category == "Technical")
{
  <span>Technical problem</span>
}
else
{
  <span>Problem is : @(ViewBag.Message.Category)</span>
}

更新了答案

  //Model
   public class Message
   {
      public int ID {get; set;}
      public string Message {get; set;}
      public string Category {get; set;}
   }

   //Controller
    public ActionResult Index()
    {
      //If you use Linq to Sql, I made this up but this should give you an idea

      using(MessageDataContext context = new MessageDataContext())
      {
        var messages = context.Messages.Where(m => m.Category == "Technical")
       .Select(m => new Message { ID = m.ID, Message = m.Text, Category = m.Category});

        return View(messages);
      }
    }

//View
@model IEnumerable<Message>

@foreach(var message in Model)
{
    if(message.Category == "Technical")
    {
      //Id and class will be "TechnicalMessage1"
      //Now you can create css class called "TechnicalMessage1" and only message with Id = 1 will have it
      <span id="@(message.Category)Message@(message.ID)" class="@(message.Category)Message@(message.ID)">Technical problem</span>
    }
    else
    {
      <span>Problem is : @(ViewBag.Message.Category)</span>
    }
}