0

我想在用户编辑表单时更改用户的属性。

这是我的看法:

@using (Html.BeginForm("Manage", "Account")) {
@Html.AntiForgeryToken()
@Html.ValidationSummary()

<fieldset>
    <legend>Change Password Form</legend>
    <ol>
        <li>
            @Html.LabelFor(m => m.UserName)
        </li>
        <li>
            @Html.LabelFor(m => m.Email)
            @Html.TextBoxFor(m => m.Email, new { @Value = ViewBag.Email })
        </li>
        <li>
            @Html.LabelFor(m => m.Adress)
            @Html.TextBoxFor(m => m.Adress, new { @Value = ViewBag.Adress })
        </li>
        <li>
            @Html.LabelFor(m => m.Description)
            @Html.TextBoxFor(m => m.Description, new { @Value = ViewBag.Description })
        </li>
        <li>
            @Html.LabelFor(m => m.Skills)
            @Html.TextBoxFor(m => m.Skills, new { @Value = ViewBag.Skills })
        </li>
    </ol>
    <input type="submit" value="Change password" />
</fieldset>

}

如您所见,如果它已经在数据库中,我会用该值填充文本框。
当他们单击“提交”时,我想将更改保存在我的存储库中。

这是我的控制器中的操作方法:

public ActionResult Manage(ChangeSettingsModel model)
{
    if (ModelState.IsValid)
    {
        try
        {
            string username = User.Identity.Name;

            // Get user 
            users user = userrepo.FindByUsername(username);

            long userid = user.user_id;

            userrepo.ChangeSettings(userid, model.Name, model.SurName, model.Email, model.Adress, model.Description, model.Skills, model.Website);
        }
        catch (ArgumentException ae)
        {
                ModelState.AddModelError("", ae.Message);
        }
   }

   return View(model);

}

在我的存储库中:

public void ChangeSettings(long userid, string name, string surname, string email, string adress, string description, string skills, string website)
    {
        //users user = entities.users.SingleOrDefault(u => u.user_id.Equals(userid));

        try
        {

        }

        catch (ArgumentException ae)
        {
            throw ae;
        }
        catch (Exception)
        {
            throw new ArgumentException("The authentication provider returned an error. Please verify your entry and try again. " +
                "If the problem persists, please contact your system administrator.");
        }

        Save();
    }

通常我会在尝试中添加一些内容,但现在我不想添加用户而是更改属性。我怎样才能做到这一点?

4

1 回答 1

2

像下面这样的东西会有所帮助。

var query = (from u in entities.users
                         where u.user_id== UID
                         select u).First();

            query.Address = u.Address;
            query.Company = u.Company;
            query.Fax = u.Fax;
            query.Mobile = u.Mobile;
            query.Name = u.Name;
            query.Telephone = u.Telephone;
entites.SubmitChanges();
于 2013-06-09T11:24:28.750 回答