HttpPostedFileBase pas de liaison de modèle

voici mon ViewModel

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

    [Required(ErrorMessageResourceType = typeof(AdministrationStrings), ErrorMessageResourceName = "FaultTypeNameRequired")]
    [Display(ResourceType = typeof(AdministrationStrings), Name = "FaultTypeName")]
    public string TypeName { get; set; }

    [Display(ResourceType = typeof(AdministrationStrings), Name = "FaultTypeDescription")]
    [DataType(DataType.MultilineText)]
    public string TypeDescription { get; set; }

    [Display(ResourceType = typeof(AdministrationStrings), Name = "FaultTypeImageFile")]
    public HttpPostedFileBase TypeImageFile { get; set; }

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

Avis, j'ai une "TypeImageFile" HttpPostedFileBase
Je m'attends à ce que le modèle de classeur serait obligations que le bien de la forme du modèle passe pour le contrôleur de bu-je continuer à recevoir la valeur null.

voici le code correspondant dans la Vue:

@using (Html.BeginForm("AddFaultType","Administration", FormMethod.Post))
{
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×</button>
<h3 id="myModalLabel">@SharedStrings.Add @SharedStrings.FaultType</h3>
</div>
<div class="modal-body">
@Html.ValidationSummary(true)
<div class="editor-label">
@Html.LabelFor(model => model.TypeName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.TypeName)
@Html.ValidationMessageFor(model => model.TypeName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.TypeDescription)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.TypeDescription)
@Html.ValidationMessageFor(model => model.TypeDescription)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.TypeImageFile)
</div>
<div class="editor-field">
<input type="file" name="TypeImageFile" id="TypeImageFile" />
</div>
</div>
<div class="modal-footer">
<input type="submit" value="@SharedStrings.Add" class="btn btn-primary" />
@Html.ActionLink(SharedStrings.Cancel, "Index", "Administration", null, new { Class = "btn", data_dismiss = "modal", aria_hidden = "true" })
</div>
}

et voici le contrôleur:

        [HttpPost]
public ActionResult AddFaultType(FaultTypeViewModel i_FaultToAdd)
{
var fileName = Path.GetFileName(i_FaultToAdd.TypeImageFile.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
i_FaultToAdd.TypeImageFile.SaveAs(path);
return RedirectToAction("Index");
}
heureux de pourim. veuillez inclure votre formulaire dans votre point de vue.
Merci Dave! 🙂 ... Heureux de Pourim à vous, j'ai ajouté de la pleine vue code, y compris la forme.

OriginalL'auteur Mortalus | 2013-02-23