如何动态地将默认值传递给文本框?

时间:2013-06-29 09:08:03

标签: asp.net-mvc-3

mvc3 razor-我的网络应用程序中有一个波纹管模型:

public class mymodel{

    [Display(Name = "name")]
    public string Name { get; set; }
}

当我们使用

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

它使用显示“名称”,例如我们的文本框的上方显示用户此文件用于输入您的姓名。

如何在文本框值中使用显示名称? 我测试它但值是空的我想从[Display(Name =“name”)]

我的模型中获取值
 @Html.TextBoxFor(m => m.Name, new {@Value = @Html.ValueFor(m => m.Name)})

2 个答案:

答案 0 :(得分:1)

@Html.TextBoxFor(m => m.Name, new {Value = Html.DisplayNameFor(m => m.Name)})

编辑:如果您需要重新显示表单并保留用户输入的值,那么您可能想要使用Darin的方法,或者执行以下操作:

@Html.TextBoxFor(m => m.Name, new { Value = (string.IsNullOrWhiteSpace(Model.Name) ? Html.DisplayNameFor(x => x.Name).ToHtmlString() : Model.Name) })

答案 1 :(得分:0)

在渲染此视图的控制器操作中,您可以设置视图模型的Name属性:

public ActionResult Index()
{
    var model = new MyViewModel();
    model.Name = ModelMetadata.FromLambdaExpression<MyViewModel, string>(x => x.Name, new ViewDataDictionary<MyViewModel>(model)).DisplayName;
    return View(model);
}

并在您看来:

@Html.LabelFor(x => x.Name)
@Html.EditorFor(x => x.Name)