User Profile属性值设置为Selected DDL值

时间:2012-08-22 13:35:59

标签: c# asp.net-mvc-3 razor

我创建了一个存储某些属性值的Profile Model。例如firstName,lastName ......等......其中state就是其中之一。

现在,当TextBox替换为DropDownList State属性时出现问题。 这是我在Edit中使用ProfileController方法的方式。

当打开app时,如果有任何现有值,则会填充。第一个问题,如何从下拉列表中获取选定的值,因此我可以将其传递到Profile属性,就像我在此方法中所做的那样。

public ActionResult Edit(string username)
{
    ViewBag.StateID = new SelectList(db.States, "StateID", "StateName");
    ProfileBase _userProfile = ProfileBase.Create(username);
    ProfileModel _profile = new ProfileModel();
    System.Web.HttpContext.Current.Session["_userName"] = username;

    if (_userProfile.LastUpdatedDate > DateTime.MinValue)
    {
        _profile.FirstName = Convert.ToString(_userProfile.GetPropertyValue("FirstName"));
        _profile.LastName = Convert.ToString(_userProfile.GetPropertyValue("LastName"));
        _profile.Address = Convert.ToString(_userProfile.GetPropertyValue("Address"));
        _profile.City = Convert.ToString(_userProfile.GetPropertyValue("City"));
        _profile.State = Convert.ToString(_userProfile.GetPropertyValue("State"));
        _profile.Zip = Convert.ToString(_userProfile.GetPropertyValue("Zip"));
    }
    return View(_profile);
}

StateTextBox中传递的字符串,然后使用Edit post方法保存时,此工作正常。

    [HttpPost]
    public ActionResult Edit(ProfileModel model)
    {
        if (ModelState.IsValid)
        {
        ProfileBase profile = ProfileBase.Create(System.Web.HttpContext.Current.Session["_userName"].ToString(), true);

        if (profile != null)
        {
            profile.SetPropertyValue("FirstName", model.FirstName);
            profile.SetPropertyValue("LastName", model.LastName);
            profile.SetPropertyValue("Address", model.Address);
            profile.SetPropertyValue("City", model.City);
            profile.SetPropertyValue("State", model.State);
            profile.SetPropertyValue("Zip", model.Zip);

            profile.Save();
        }
        else
        {
            ModelState.AddModelError("", "Error writing to Profile");
        }
    }
    return RedirectToAction("Index");
}

这就是我为State创建下拉列表的方法。

型号:

public class State
{
    public int StateID { get; set; }
    public string StateName { get; set; }

    public IEnumerable<RegisterModel> RegModel { get; set; }
    public IEnumerable<ProfileModel> Profiles { get; set; }
}

控制器:

ViewBag.StateID = new SelectList(db.States, "StateID", "StateName");

查看:

@Html.DropDownList("StateID", (SelectList)ViewBag.StateID, new { @class = "dropdown" })

我尝试过几件事。到目前为止没有运气。我错过了什么?!

0 个答案:

没有答案