我有一个场景,我创建与创建它们的登录用户(Windows身份验证)相关联的“机器”实体。只有在创建了至少一个Machine实体后,才会在数据库中创建用户。
我在create Machine表单上使用模型绑定。 Machine模型有一个关联的User实体,一个如下所示的自定义实体:
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创建处理程序时,模型中没有填充它。
我想知道我怎么能用模型传递用户名?
答案 0 :(得分:1)
首先,您使用HiddenFor()
方法调用时遇到的问题是第二个参数应该是htmlAttributes的object
。所以你的方法调用不正确。 (MSDN Reference for the HiddenFor()
method):
public static MvcHtmlString HiddenFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
Object htmlAttributes
)
为什么要在View中填充此内容?将此逻辑带到控制器:
[HttpPost]
public ActionResult GetUser(User newUser)
{
newUser.UserName = User.Identity.Name;
// now do something with the passed in model
}