首页 > 代码库 > MVC 更新部分字段

MVC 更新部分字段

<1>首先是在项目中添加一个ADO.NET实体数据模型,选择MemberInfo表 他会自动在模型里面生成一个MemberInfo的类,也会生成一个对应的实体类DataBaseEntities。用的时候只有用模型里的MemberInfo类和DataBaseEntities就好了。 不需再额外添加MemberInfo类了  【注意:这个DataBaseEntities 是你的数据库名字+Entities】

<1>

MemeberCenter控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace bigtree.Controllers
{

    public class MemberCenterController : Controller
    {

        bigTreeEntities db = new bigTreeEntities();
        public ActionResult Index(int id)
        {
            ViewData["uid"] = id;
            
            return View();
        }


        /// <summary>
        /// 从实体中查询出一条数据出来,然后将这条数据保存到ViewData.Model中 。这样在Info视图里就可以根据Model来取数据了
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpGet]
        public ActionResult Info(int id)
        {
            ViewData["uid"] = id;

            //var queryUserInfo = from d in db.MemberInfo
            //                    where d.id == id
            //                    select d;

            //ViewData.Model = queryUserInfo.Single();

            var queryUserInfo = db.MemberInfo.Single(x => x.id == id);

            var data= http://www.mamicode.com/MemberDetail.ConvertToViewModel(queryUserInfo);>
info视图

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/MemberCenter.Master"
     Inherits="System.Web.Mvc.ViewPage<bigtree.ViewModel.MemberDetail>"%>
    <%@ Import Namespace="bigtree" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
        
    <% using (Html.BeginForm()) {%>
    <div class="rightCon">
        <div class="nowTil">
            <h3>
                个人资料</h3>
        </div>
        <ul class="memForm">
            <li>
                <p class="setterTil">
                    手机:</p>
                <div class="setterBd">
                    <%--<input type="text" class="setterInput fl" value=http://www.mamicode.com/" " readonly="">--%>>
ViewModel 模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace bigtree.ViewModel
{
    public class MemberDetail
    {
        public int Id { get; set; }

        public string Mobile { get; set; }

        public string Name { get; set; }

        public string UserName { get; set; }

        public string Email { get; set; }

        public string Gender { get; set; }

        /// <summary>
        /// 将从实体(数据表)中查询出来的对象转换成ViewModel。其实也就是将从实体中查询出来的对象的属性字段,赋值给ViewModel。然后由ViewModel来将值展示在前端页面。
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public static MemberDetail ConvertToViewModel(bigtree.MemberInfo info)
        {
            MemberDetail memberDetail = new MemberDetail();
            memberDetail.Mobile = info.mobile;//将实体的字段赋值给ViewModel对象的字段
            memberDetail.Email = info.email;
            memberDetail.Name = info.name;
            memberDetail.UserName = info.userName;
            memberDetail.Gender = info.sex;
            memberDetail.Id = info.id;
            return memberDetail;  //返回一个ViewModel 字段
        }

        /// <summary>
        /// 将ViewModel转换成实体。首先用户从实体中查询出一条数据(这条数据就是参数bigtree.MemberInfo info),然后我要对这条数据进行更新。这个更新就是用户在前端页TextBox中输入的数据(其实也就是给ViewModel对象的属性赋值的过程)。然后将这个对象的所有属性赋值给从实体中查询出来的对象的对应属性
        /// </summary>
        /// <param name="memberDetail"></param>
        /// <param name="info"></param>
        /// <returns></returns>
        public static bigtree.MemberInfo ConvertToEntity(MemberDetail memberDetail, bigtree.MemberInfo info)
        {

            info.email = memberDetail.Email; //将用户在页面输入的Email的值赋值给 实体bigtree.MemberInfo类的email字段,以达到更新实体类(其实这个实体类就是数据表)中的数据
            info.mobile = memberDetail.Mobile;
            info.id = memberDetail.Id;
            info.name = memberDetail.Name;
            info.sex = memberDetail.Gender;
            info.userName = memberDetail.UserName;

            return info; //返回一个更新后的实体对象
        }

    }


}


MVC 更新部分字段