#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
будет отображаться пространство имен объекта.
и видите, что для этого метода существует перегрузка:
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