ASP.Net [HiddenInput:当用Html.EditorForModel剃刀中呈现的数据

2019-06-25 12:25发布

我有以下型号:

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

    [Required(ErrorMessage="Please enter a product name")]
    public string Name { get; set; }

    [Required(ErrorMessage="Please enter a description")]
    [DataType(DataType.MultilineText)]
    public string Description { get; set; }

    [Required]
    [Range(0.01, double.MaxValue, ErrorMessage="Please enter a positive price")]
    public decimal Price { get; set; }

    [Required(ErrorMessage="Please specify a category")]
    public string Category { get; set; }

    public byte[] ImageData { get; set; }

    [HiddenInput(DisplayValue = false)]
    public string ImageMimeType { get; set; }
}

我引用System.Web.MvcSystem.ComponentModel.DataAnnotations

我然后在我看来,这呈现出如下:

<h1>Edit @Model.Name</h1>

@using (Html.BeginForm("Edit", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" })) {
@Html.EditorForModel()

<div class="editor-lable">Image</div>
<div class="editor-=field">
    @if (Model.ImageData == null)
    {
        @:None
        }
    else
    {
        <img width="150" height="150" src="@Url.Action("GetImage", "Product", new { Model.ProductID })" />
    }
    <div>Upload new image: <input type="file" name="Image" . /></div>
</div>
<input type="submit" value="Save" />
@Html.ActionLink("Cancel and return to List", "Index")

}

问题是,尽管[Required]注释工作正常[HiddenInput]字段实际上没有隐藏。 HTML源甚至不具有隐藏属性显示出来。

为什么不Html.EditorForModel应用[HiddenInput]属性的那些属性? 有任何想法吗?

Answer 1:

而在我的情况下,我不得不写的[HiddenInput][HiddenInput(DisplayValue=false)]



Answer 2:

我有一个类似的问题,在我的情况的问题是因为System.Web.Mvc参考引起的。

我创建一个MVC 3应用程序,但不是添加System.Web.Mvc的第3版我增加了第4版。



Answer 3:

在我的情况下,这个问题的原因是,包含装配模型类和主Web应用程序项目有不同的版本System.Web.Mvc装配的引用。

如果你有几个项目引用System.Web.Mvc装配 - 确保使用的版本是所有项目中的相同。



Answer 4:

我有同样的问题。

原来,我在所包含的Web应用程序项目模型和它的5.2.0.0项目必须System.Web.Mvc的5.2.2.0版本。

要安装你需要运行在NuGet包mananger以下正确的版本:

install-package Microsoft.Aspnet.Mvc ProjectName -version X

与你的项目的名称和X不同,需要安装的版本替换项目名。

例如:

install-package Microsoft.Aspnet.Mvc TestProject.Web -version 5.2.2.0

如果省略了版本号,将的NuGet只需下载并安装最新版本。

有一次,我做到了这一点,我也需要升级我的单元测试项目是在同一个版本的Web应用程序项目。 您可能需要做同样的。



Answer 5:

如果您使用脚手架发电机组将与隐藏在您的视图类型的输入标签。 这依赖于T4模板。

如果你创建视图手动您必须手动设置字段。 例如

@Html.HiddenFor(model => model.Id)


Answer 6:

我也有这个问题。 这个问题是由于在同一个解决方案的不同项目,不同版本System.Web.Mvc的发生。 我删除并重新添加引用,使其同样为所有的项目(4.0.0.1)。



文章来源: ASP.Net [HiddenInput] Data Attribute not working when rendered with Html.EditorForModel in Razor?