C# 将FirstName从模型返回到视图中的标签
我试图将用户输入的名字作为标签呈现在视图中。我试过C# 将FirstName从模型返回到视图中的标签,c#,html,asp.net-mvc,razor,C#,Html,Asp.net Mvc,Razor,我试图将用户输入的名字作为标签呈现在视图中。我试过 @Html.DisplayFor(c => c.FirstName) @Html.LabelFor(c => c.FirstName) @Html.DisplayNameFor(c => c.FirstName) 最好的方法是什么?看起来很简单,我显然错过了什么?使用第二个变量,我得到的是变量名,而不是值 控制器代码: namespace TestProject.Controllers { public class
@Html.DisplayFor(c => c.FirstName)
@Html.LabelFor(c => c.FirstName)
@Html.DisplayNameFor(c => c.FirstName)
最好的方法是什么?看起来很简单,我显然错过了什么?使用第二个变量,我得到的是变量名,而不是值
控制器代码:
namespace TestProject.Controllers
{
public class ContactsController : Controller
{
[HttpGet]
public ActionResult Index()
{
Contact contact = new Contact();
return View(contact);
}
}
}
查看代码:
@model TestProject.Models.Contact
@{
ViewBag.Title = "ContactSuccess";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Contact Has Been Successfully Added</h2>
<div class="imgContainer">
<img src="~/Content/Images/checkmark" />
</div>
@model.FirstName
如果不存在适当的模板,则输出相应显示模板的渲染结果,或将属性值作为字符串输出。虽然显示模板可能包含将呈现到页面的HTML,但它本身不生成HTML
@Html.LabelFor(m => m.Foo)
生成一个
标记,将for
属性设置为将为属性生成的HTML id,其内容与从HTML.DisplayNameFor
获得的内容相同
@Html.DisplayNameFor(m => m.Foo)
返回属性的显示名称(即假设属性附带属性[display(name=“My Awesome Foo”)]
,“My Awesome Foo”将被输出),或者返回属性的名称“Foo”
-
因此,假设您需要类似于名字的东西,那么您需要Html.LabelFor
。如果你说的是像鲍勃这样的人。没有人能帮上忙。您必须严格使用:
<label>@Html.DisplayFor(m => m.FirstName)</label>
@Html.DisplayFor(m=>m.FirstName)
或者更简单,只是:
<label>@Model.FirstName</label>
@Model.FirstName
使用Html.DisplayFor
的唯一原因是需要应用某种格式,例如DateTime
属性,或者需要使用默认或自定义显示模板。对于string
类型,没有默认的显示模板,因此Html.DisplayFor
的结果将与直接输出属性相同,除非您创建了自定义模板。是否可以从操作、视图和视图模型/模型中显示更多代码来解释您遇到的问题?这应该行。我的错误,复制了错误的行,但我已经尝试过了。它返回变量名。只需执行@model.FirstName
即可将字段内容呈现到视图中。@CraigW.-也尝试过了,但现在加载失败,错误为异常详细信息:System.NullReferenceException:Object reference未设置为对象的实例。您是否实际将模型传递给视图?显示控制器操作中的代码。
<label>@Html.DisplayFor(m => m.FirstName)</label>
<label>@Model.FirstName</label>