如何在来自视图的视图值中显示标签

时间:2013-08-01 04:02:52

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我有一个标签,我需要在该标签中显示值,并且我已在控制器中为该标签指定了值。

这是模型

 namespace MvcSampleApplication.Models
 {    
     public class labelsdisplay
     {
        public string labelvalue { get; set; }    
     }
 }

这是我的控制器

namespace MvcSampleApplication.Controllers
{
    public class LbelDisplayController : Controller
    {               
        public ActionResult Index()
        {
            labelsdisplay lbldisx = new labelsdisplay();
            string name = "ABC";
            lbldisx.labelvalue = name;       
            return View(lbldisx);
        }    
    }
}

这个视图(强类型视图)

 @model MvcSampleApplication.Models.labelsdisplay
@{
    ViewBag.Title = "Index";
}    
<h2>Index</h2>
@using (@Html.BeginForm())
{     
    @Html.LabelFor(m=>m.labelvalue)    
}

我的问题是无法显示值(“ABC”)而不是在视图中的标签中显示“labelvalue”... 任何人都会提出任何解决方案......就此而言......

非常感谢..

2 个答案:

答案 0 :(得分:4)

要仅显示该值,您可以使用

@Html.DisplayNameFor(m=>m.labelvalue)

或者,如果要显示带有值的label元素,可以使用

@Html.LabelFor(m=>m.labelvalue, Model.labelvalue)  

第一个参数是名称的值,第二个参数是标签的值。

答案 1 :(得分:3)

更改

@Html.LabelFor(m=>m.labelvalue)

<label>@Model.labelvalue</label>

(如果您不需要,请省略标签标签)。

@ -operator将接受你提供的任何内容并将其转换为字符串,HTML-encode该字符串(除非你给它的是IHtmlString)并在输出中呈现编码的字符串。

另一方面,

Html.LabelFor旨在与表单模型一起使用。假设你有这样的模型

public class PersonForm
{
  public string Firstname { get; set;}
  public string Lastname { get; set;}
}

以及接受此表格作为参数的行动方法:

public ActionResult CreatePerson(PersonForm form){
  /* Create new person from form */
}

现在,在您看来,要显示Firstname字段的标签,请使用Html.LabelFor()

@model PersonForm

@Html.LabelFor(m => m.Firstname)

这将呈现类似<label for="Firstname">Firstname</label>的内容。如果您想要渲染<label for="Firstname">Please enter firstname</label>之类的内容,则会将属性附加到Firstname属性:

public class PersonForm
{
  [Display(Name = "Please enter firstname")]
  public string Firstname { get; set;}

  [Display(Name = "Please enter lastname")]
  public string Lastname { get; set;}
}

其中属性来自System.ComponentModel.DataAnnotations命名空间。