MVC 3 Пользователь сохранен с сущностью, переданной из внешнего интерфейса - PullRequest
1 голос
/ 05 марта 2012

У меня есть сценарий, в котором я создаю сущности «Машины», связанные с вошедшим в систему пользователем (проверка подлинности Windows), который их создал. Пользователь создается в базе данных только после того, как создал хотя бы один объект Machine.

Я использую привязку модели в форме создания машины. Модель Machine имеет связанный пользовательский объект, пользовательский вид которого выглядит следующим образом:

public class User
{
    public int UserId { get; set; }

    [DisplayName("User")]
    public string Username { get; set; }

    public string Email { get; set; }

    public int SectorId { get; set; }
    public Sector Sector { get; set; }

    public List<Machine> Machines { get; set; }
}

Пока что в представлении создания машины я создал скрытый ввод для имени пользователя, используя следующее:

@Html.HiddenFor(model => model.User.Username, new { User.Identity.Name })

Но я обнаружил, что это не заполняется в модели, когда она возвращается в обработчик создания HttpPost.

Мне было интересно, как я мог бы передать имя пользователя с моделью?

1 Ответ

1 голос
/ 05 марта 2012

Во-первых, проблема, с которой вы сталкиваетесь при вызове метода HiddenFor(), заключается в том, что второй параметр должен быть object для атрибутов htmlAttributes.Так что ваш метод вызова не является правильным.( Ссылка MSDN для HiddenFor() метода ):

public static MvcHtmlString HiddenFor<TModel, TProperty>(
    this HtmlHelper<TModel> htmlHelper,
    Expression<Func<TModel, TProperty>> expression,
    Object htmlAttributes
)

Почему вы пытаетесь заполнить это в представлении?Отнесите эту логику на контроллер:

[HttpPost]
public ActionResult GetUser(User newUser)
{
    newUser.UserName = User.Identity.Name;

    // now do something with the passed in model
}
...