C# Asp.NETMVC4中的HttpPostedFileBase,带有Jasny引导,现有映像保存到S3

C# Asp.NETMVC4中的HttpPostedFileBase,带有Jasny引导,现有映像保存到S3,c#,twitter-bootstrap,asp.net-mvc-4,razor,jasny-bootstrap,C#,Twitter Bootstrap,Asp.net Mvc 4,Razor,Jasny Bootstrap,我需要知道Jasny Bootstrap中是否删除了图像。我的保存和删除代码非常有效。问题在于,如果不设置映像,那么文件上载映像只会在存在HttpPostedFileBase时转换为HttpPostedFileBase 类别: [NotMapped] public HttpPostedFileBase Image { get; set; } 编辑视图: @using (Html.BeginForm("Edit", "MyObject", FormMethod.Post, new

我需要知道Jasny Bootstrap中是否删除了图像。我的保存和删除代码非常有效。问题在于,如果不设置映像,那么文件上载映像只会在存在HttpPostedFileBase时转换为HttpPostedFileBase

类别:

    [NotMapped]
    public HttpPostedFileBase Image { get; set; }
编辑视图:

@using (Html.BeginForm("Edit", "MyObject", FormMethod.Post, new { enctype = "multipart/form-data" })) {
    <div class="field">
        <div class="fileinput @imageClass" data-provides="fileinput" data-name="Image">
        <div class="fileinput-new thumbnail" style="width: 150px; height: 150px;">
        <img src="@MyNamespace.Components.S3Utility.DefaultImageUrl">
     </div>
     <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 350px; max-height: 350px;">
         <img src="@imageUrl">
     </div>
     <div>
         <span class="btn btn-default btn-file">
             <span class="fileinput-new">Select image</span>
             <span class="fileinput-exists">Change</span>
             <input type="file" name="Image">
         </span>
         <a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
    </div>
}
@using (Html.BeginForm("Edit", "MyObject", FormMethod.Post, new { enctype = "multipart/form-data" })) {
    <div class="field">
        <div class="fileinput @imageClass" data-provides="fileinput" data-name="Image">
        <div class="fileinput-new thumbnail" style="width: 150px; height: 150px;">
        <img src="@MyNamespace.Components.S3Utility.DefaultImageUrl">
     </div>
     <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 350px; max-height: 350px;">
         <img src="@imageUrl">
         // THIS IS THE NEW CODE FOR CHECKING EXISTING IMAGE
         @if (existingImage) {
             <input type="hidden" name="ExistingImage" value="true" />
         }
         // END NEW CODE
     </div>
     <div>
         <span class="btn btn-default btn-file">
             <span class="fileinput-new">Select image</span>
             <span class="fileinput-exists">Change</span>
             <input type="file" name="Image">
         </span>
         <a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
    </div>
}
所有这些都很好。如果有合适的图像(@imageUrl,我正在设置),它甚至会加载图像

问题是“Image”HttpPostedFileBase在更新时始终为空

是否有某种方法可以知道图像是否已被删除或设置?在Jasny中设置/删除图像时是否更新该值

我看到了这个帖子


但是它没有转换成Asp.NETMVC4和HttpPostedFileBase。

好的,所以答案相当简单。在对象中,我添加了另一个属性

[NotMapped]
public bool ExistingImage { get; set; }
在我的编辑视图中,仅当图像确实存在时,我才为现有图像添加了一个隐藏字段

编辑视图:

@using (Html.BeginForm("Edit", "MyObject", FormMethod.Post, new { enctype = "multipart/form-data" })) {
    <div class="field">
        <div class="fileinput @imageClass" data-provides="fileinput" data-name="Image">
        <div class="fileinput-new thumbnail" style="width: 150px; height: 150px;">
        <img src="@MyNamespace.Components.S3Utility.DefaultImageUrl">
     </div>
     <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 350px; max-height: 350px;">
         <img src="@imageUrl">
     </div>
     <div>
         <span class="btn btn-default btn-file">
             <span class="fileinput-new">Select image</span>
             <span class="fileinput-exists">Change</span>
             <input type="file" name="Image">
         </span>
         <a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
    </div>
}
@using (Html.BeginForm("Edit", "MyObject", FormMethod.Post, new { enctype = "multipart/form-data" })) {
    <div class="field">
        <div class="fileinput @imageClass" data-provides="fileinput" data-name="Image">
        <div class="fileinput-new thumbnail" style="width: 150px; height: 150px;">
        <img src="@MyNamespace.Components.S3Utility.DefaultImageUrl">
     </div>
     <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 350px; max-height: 350px;">
         <img src="@imageUrl">
         // THIS IS THE NEW CODE FOR CHECKING EXISTING IMAGE
         @if (existingImage) {
             <input type="hidden" name="ExistingImage" value="true" />
         }
         // END NEW CODE
     </div>
     <div>
         <span class="btn btn-default btn-file">
             <span class="fileinput-new">Select image</span>
             <span class="fileinput-exists">Change</span>
             <input type="file" name="Image">
         </span>
         <a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
    </div>
}
我的问题是不理解.fileinput exists部分是如何工作的。当您删除或更新图像时,它实际上会删除该部分中的所有内容。所以,如果在Jasny中调用remove或update get,ExistingImage将默认为false。在这一点上,我只是检查图像是否为空(已删除或不存在)或是否存在(已更新)。如果映像不存在,这会调用对S3的额外删除,但这并不是什么大问题(出于我的目的)