1

嗨,我正在使用 Editorfor() 制作一个将视图模型提交给控制器的小表单。Editorfor() 很好地打印模型的输入字段,但它也打印主键字段。所以我想隐藏主键字段。

@Html.EditorFor(m=>m.viewmodel)

这是我的标记。

@Html.HiddenFor(m => m.viewmodel.Id);
@Html.EditorFor(m=>m.viewmodel)

已经尝试过但不起作用。我想直接对模型进行处理,但我使用的是 EF Designer,所以我不确定从哪里开始。请给我一个建议。

4

3 回答 3

4

尝试这个:

[HiddenInput(DisplayValue = false)]
public int ProductID { get; set; 
于 2013-10-31T22:16:08.370 回答
0

使用自定义编辑器模板。例如:

MyViewModel.cshtml(存储在 ~/Views/Shared/EditorTemplates 文件夹中,结构类似于局部视图):

@model MyViewModel
@Html.HiddenFor(m => m.Id)
@Html.EditorFor(m => m.Property1)
@Html.TextboxFor(m => m.Property2)
@Html.TextAreaFor(m => m.Property3)
// Whatever else you want in the template

然后,您可以在需要使用它的视图中对您的模型调用 EditorFor,MVC 将知道使用您的自定义模板:

@Html.EditorFor(m => m.MyViewModel)

要使用不基于类型名称的自定义显示模板,您还可以使用[UIHint]此处描述的属性:http: //www.growthwiththeweb.com/2012/12/aspnet-mvc-display-and-编辑器-templates.html

于 2013-10-31T22:11:59.563 回答
0

不要为您的关键属性创建任何字段。如果没有要检查的字段,验证就没有什么可抱怨的了。稍后您可以为控制器中的主键提供一个值。

于 2016-06-14T12:07:50.257 回答