3.4 Edit修改用戶信息jquery
咱們用FormCollection簡化了表單提交,很是方便的進行用戶信息修改。async
[HttpPost, Authorize] public async Task<ActionResult> Edit(User user, FormCollection values) { try { ActiveDirectoryClient client = AuthenticationHelper.GetActiveDirectoryClient(); IUser toUpdate = await client.Users.GetByObjectId(values[「ObjectId」]).ExecuteAsync(); foreach (var value in values) { var sourceProp = user.GetType().GetProperty(value.ToString(), BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic); var destProp = toUpdate.GetType().GetProperty(value.ToString(), BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic); if (null != sourceProp && sourceProp.CanRead) { if (null != destProp && destProp.CanWrite) { destProp.SetValue(toUpdate, sourceProp.GetValue(user, null), null); } } } await toUpdate.UpdateAsync(); return RedirectToAction("Index"); } catch (Exception) { return View(); } }
對應的View代碼爲spa
@model Microsoft.Azure.ActiveDirectory.GraphClient.User @{ ViewBag.Title = "UserEdit"; } <h2>UserEdit</h2> @using (Html.BeginForm("Edit", "AzureActiveDirectory", null, FormMethod.Post, new { @class = "form-horizontal" })) { @Html.ValidationSummary(true) <div class="form-group"> @Html.Label("照片", new { @class = "col-sm-2 control-label" }) <input type=file name="photofile" class="col-sm-10" /> </div> <div class="form-group"> @Html.LabelFor(model => model.UserPrincipalName,"用戶名(全名)", new { @class = "col-sm-2 control-label" }) <div class="col-sm-10"> @Html.DisplayFor(model => model.UserPrincipalName) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.DisplayName,"顯示名稱", new { @class = "col-sm-2 control-label" }) <div class="col-sm-10"> @Html.EditorFor(model => model.DisplayName) @Html.ValidationMessageFor(model => model.DisplayName) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.AccountEnabled,"帳號狀態", new { @class = "col-sm-2 control-label" }) <div class="col-sm-10"> @Html.EditorFor(model => model.AccountEnabled) @Html.ValidationMessageFor(model => model.AccountEnabled) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.GivenName,"名字", new { @class = "col-sm-2 control-label" }) <div class="col-sm-10"> @Html.EditorFor(model => model.GivenName) @Html.ValidationMessageFor(model => model.GivenName) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Surname,"姓氏", new { @class = "col-sm-2 control-label" }) <div class="col-sm-10"> @Html.EditorFor(model => model.Surname) @Html.ValidationMessageFor(model => model.Surname) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.JobTitle,"職務", new { @class = "col-sm-2 control-label" }) <div class="col-sm-10"> @Html.EditorFor(model => model.JobTitle) @Html.ValidationMessageFor(model => model.JobTitle) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Department,"部門", new { @class = "col-sm-2 control-label" }) <div class="col-sm-10"> @Html.EditorFor(model => model.Department) @Html.ValidationMessageFor(model => model.Department) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Mobile, new { @class = "col-sm-2 control-label" }) <div class="col-sm-10"> @Html.EditorFor(model => model.Mobile) @Html.ValidationMessageFor(model => model.Mobile) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.StreetAddress,"街道地址", new { @class = "col-sm-2 control-label" }) <div class="col-sm-10"> @Html.EditorFor(model => model.StreetAddress) @Html.ValidationMessageFor(model => model.StreetAddress) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.City,"城市", new { @class = "col-sm-2 control-label" }) <div class="col-sm-10"> @Html.EditorFor(model => model.City) @Html.ValidationMessageFor(model => model.City) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.State,"省/自治區/直轄市", new { @class = "col-sm-2 control-label" }) <div class="col-sm-10"> @Html.EditorFor(model => model.State) @Html.ValidationMessageFor(model => model.State) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Country,"國家或地區", new { @class = "col-sm-2 control-label" }) <div class="col-sm-10"> @Html.EditorFor(model => model.Country) @Html.ValidationMessageFor(model => model.Country) </div> </div> <p> <input type="submit" value="Edit" class="btn btn-primary" /> </p> } <div> @Html.ActionLink("Back to List", "Index") </div> @section Scripts { @Scripts.Render("~/bundles/jqueryval") }
成功運行後的效果爲code
返回Index,你會觀察到職務列有了信息orm