【问题标题】:How to hide primary key input field using editorfor如何使用editorfor隐藏主键输入字段
【发布时间】:2013-10-31 22:00:32
【问题描述】:

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

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

这是我拥有的标记。

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

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

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 html-helper


    【解决方案1】:

    试试这个:

    [HiddenInput(DisplayValue = false)]
    public int ProductID { get; set; 
    

    【讨论】:

    【解决方案2】:

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

    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.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-12
        • 2015-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多