Проблема с загрузкой изображения участника в Umbraco

#asp.net-mvc #umbraco8

#asp.net-mvc #umbraco8

Вопрос:

Я работаю с API участника в Umbraco 8 и пытаюсь загрузить изображение при регистрации. После того, как я зарегистрирую участника и открою профиль участника в backoffice, я вижу это: введите описание изображения здесь

Это мой соконтроллер

     public class RegisterController : SurfaceController
{
    // GET: Register
    public ActionResult Register(Models.RegisterModel model)
    {
        if (!ModelState.IsValid)
            return CurrentUmbracoPage();

        var memberService = Services.MemberService;

        if (memberService.GetByEmail(model.Email) != null)
        {
            ModelState.AddModelError("", "A member with that email alredy exists");
            return CurrentUmbracoPage();
        }

        var member = memberService.CreateMemberWithIdentity(model.Email, model.Email, model.Name, "bMEMembers");

        member.SetValue("companyName", model.CompanyName );
        member.SetValue("avatar", model.Avatar);


        memberService.SavePassword(member, model.Password);
        Members.Login(model.Email, model.Password);

        memberService.Save(member);

        return Redirect("/");
    }
}
  

Модель:

         public HttpPostedFileBase Avatar { get; set; }
  

Вид:

     @Html.LabelFor(model => model.Avatar)
    <input type="file" name="Avatar" />
    @Html.ValidationMessageFor(model => model.Avatar)

    <input class="btn" type="submit" value="Create" />
  

Кто-нибудь может мне помочь с этим?

Ответ №1:

Это нормально отображаться, потому что Avatar это объект (точно: HttpPostedFileBase ), и LabelFor будет отображаться пространство имен объекта.

Взгляните: https://learn.microsoft.com/en-us/dotnet/api/system.web.mvc.html.labelextensions .labelfor?view=aspnet-mvc-5.2

и видите, что для этого метода существует перегрузка:

 public static System.Web.Mvc.MvcHtmlString LabelFor<TModel,TValue> (this System.Web.Mvc.HtmlHelper<TModel> html, System.Linq.Expressions.Expression<Func<TModel,TValue>> expression, string labelText, System.Collections.Generic.IDictionary<string,object> htmlAttributes);
  

вы можете использовать как:

@Html.LabelFor(model => model.Avatar, "Avatar", null);


или более красивый способ:

 [DisplayName("Avatar")]
public HttpPostedFileBase Avatar { get; set; }
  

и оставьте свой CSHTML-код:

 @Html.LabelFor(model => model.Avatar)
  

Комментарии:

1. Простите меня, если я не понимаю, но если я добавлю [DisplayName («Аватар»)] в свою модель, я все равно получу тот же результат.

2. Попробуйте первый вариант, затем

3. к сожалению, я получил тот же результат

4. Тогда проблема в чем-то другом

5. Я пробовал этот код в Umbraco 7, и он там работает, но не в Umbraco 8